/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 80033
 Source Host           : localhost:3306
 Source Schema         : studio

 Target Server Type    : MySQL
 Target Server Version : 80033
 File Encoding         : 65001

 Date: 15/02/2025 16:22:44
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for school_academy
-- ----------------------------
DROP TABLE IF EXISTS `school_academy`;
CREATE TABLE `school_academy` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '学院主键id',
  `academy_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '学院名称',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of school_academy
-- ----------------------------
BEGIN;
INSERT INTO `school_academy` (`id`, `academy_name`) VALUES (2, '计算机工程学院');
INSERT INTO `school_academy` (`id`, `academy_name`) VALUES (3, '机械工程学院');
COMMIT;

-- ----------------------------
-- Table structure for school_grade
-- ----------------------------
DROP TABLE IF EXISTS `school_grade`;
CREATE TABLE `school_grade` (
  `grade_id` bigint NOT NULL AUTO_INCREMENT COMMENT '年级主键id',
  `grade_num` int NOT NULL COMMENT '年级',
  PRIMARY KEY (`grade_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of school_grade
-- ----------------------------
BEGIN;
INSERT INTO `school_grade` (`grade_id`, `grade_num`) VALUES (1, 2022);
INSERT INTO `school_grade` (`grade_id`, `grade_num`) VALUES (2, 2021);
INSERT INTO `school_grade` (`grade_id`, `grade_num`) VALUES (3, 2020);
INSERT INTO `school_grade` (`grade_id`, `grade_num`) VALUES (4, 2019);
INSERT INTO `school_grade` (`grade_id`, `grade_num`) VALUES (5, 2018);
INSERT INTO `school_grade` (`grade_id`, `grade_num`) VALUES (6, 2017);
INSERT INTO `school_grade` (`grade_id`, `grade_num`) VALUES (7, 2023);
INSERT INTO `school_grade` (`grade_id`, `grade_num`) VALUES (8, 2024);
COMMIT;

-- ----------------------------
-- Table structure for school_major
-- ----------------------------
DROP TABLE IF EXISTS `school_major`;
CREATE TABLE `school_major` (
  `major_id` bigint NOT NULL AUTO_INCREMENT COMMENT '专业主键id',
  `major_name` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '专业名称',
  PRIMARY KEY (`major_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of school_major
-- ----------------------------
BEGIN;
INSERT INTO `school_major` (`major_id`, `major_name`) VALUES (1, '计算机科学');
INSERT INTO `school_major` (`major_id`, `major_name`) VALUES (2, '软件工程');
INSERT INTO `school_major` (`major_id`, `major_name`) VALUES (3, '计算机应用技术');
INSERT INTO `school_major` (`major_id`, `major_name`) VALUES (4, '物联网技术');
INSERT INTO `school_major` (`major_id`, `major_name`) VALUES (5, '虚拟现实');
INSERT INTO `school_major` (`major_id`, `major_name`) VALUES (6, '人工智能');
INSERT INTO `school_major` (`major_id`, `major_name`) VALUES (7, '电气工程及其自动化（电力系统继电保护）');
COMMIT;

-- ----------------------------
-- Table structure for studio_achievement
-- ----------------------------
DROP TABLE IF EXISTS `studio_achievement`;
CREATE TABLE `studio_achievement` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `title` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '标题',
  `preview_img` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '预览图',
  `pocs_id` bigint DEFAULT NULL COMMENT '成果分类id【studio_pocs】',
  `create_user_id` bigint DEFAULT NULL COMMENT '创建用户id【sys_user】',
  `part_user_ids` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '参与者，包含有多个用户id【sys_user】，使用,分隔',
  `start_time` datetime DEFAULT NULL COMMENT '过程开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '过程结束时间',
  `description` text COLLATE utf8mb4_general_ci COMMENT '成果描述及总结材料（可以markdown形式）',
  `del_flag` tinyint DEFAULT '0' COMMENT '删除标志，0表示未删除，1表示删除',
  `inclusion_flag` tinyint DEFAULT '0' COMMENT '收录标志，0表示未收录，1为申请收录，2为收录打回，3为收录通过（可对外展示）',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='成果表';

-- ----------------------------
-- Records of studio_achievement
-- ----------------------------
BEGIN;
INSERT INTO `studio_achievement` (`id`, `title`, `preview_img`, `pocs_id`, `create_user_id`, `part_user_ids`, `start_time`, `end_time`, `description`, `del_flag`, `inclusion_flag`, `create_time`, `update_time`) VALUES (2, '1', 'http://127.0.0.1:8999/studio/static/742c1b84-4d0e-4cfc-b2db-198ca0b25081.png', 2, 1, '', '2024-08-01 00:00:00', '2024-10-31 00:00:00', '123132', 0, 3, '2024-08-18 16:14:23', '2024-08-22 01:00:18');
INSERT INTO `studio_achievement` (`id`, `title`, `preview_img`, `pocs_id`, `create_user_id`, `part_user_ids`, `start_time`, `end_time`, `description`, `del_flag`, `inclusion_flag`, `create_time`, `update_time`) VALUES (4, '成果描述', 'http://127.0.0.1:8999/studio/static/cb5d66d9-199b-4d6b-bbd0-b8593fe3277d.jpg', 3, 1, '1,29,30,31,32', '2024-08-14 00:00:00', '2024-08-23 00:00:00', '123', 0, 3, '2024-08-19 00:12:07', '2024-08-23 21:36:47');
INSERT INTO `studio_achievement` (`id`, `title`, `preview_img`, `pocs_id`, `create_user_id`, `part_user_ids`, `start_time`, `end_time`, `description`, `del_flag`, `inclusion_flag`, `create_time`, `update_time`) VALUES (5, '222', 'http://127.0.0.1:8999/studio/static/fe59ac2c-86e1-4a7c-a228-e9bd7f3dd256.png', 3, 1, '31,33', '2024-08-13 00:00:00', '2024-08-23 00:00:00', '21334fasfd', 0, 3, '2024-08-20 01:00:59', '2024-08-23 01:18:44');
INSERT INTO `studio_achievement` (`id`, `title`, `preview_img`, `pocs_id`, `create_user_id`, `part_user_ids`, `start_time`, `end_time`, `description`, `del_flag`, `inclusion_flag`, `create_time`, `update_time`) VALUES (6, 'dijia的成果1', 'http://127.0.0.1:8999/studio/static/4c6ec17a-d8a6-4257-9002-fbedfe0ce56e.png', 2, 35, '1,29,30,31', '2024-08-20 00:00:00', '2024-08-30 00:00:00', 'sdfdsaf', 0, 3, '2024-08-22 01:08:03', '2024-08-23 21:39:06');
INSERT INTO `studio_achievement` (`id`, `title`, `preview_img`, `pocs_id`, `create_user_id`, `part_user_ids`, `start_time`, `end_time`, `description`, `del_flag`, `inclusion_flag`, `create_time`, `update_time`) VALUES (7, '无人机', 'http://127.0.0.1:8999/studio/static/36255cb2-1509-4f85-addf-a36546ae1a98.png', 2, 35, '29,31,34,33,30,32', '2024-08-20 00:00:00', '2024-08-24 00:00:00', '无人机材料', 0, 3, '2024-08-23 21:43:00', '2024-08-23 21:43:43');
INSERT INTO `studio_achievement` (`id`, `title`, `preview_img`, `pocs_id`, `create_user_id`, `part_user_ids`, `start_time`, `end_time`, `description`, `del_flag`, `inclusion_flag`, `create_time`, `update_time`) VALUES (8, '蜡笔小新的成果', 'http://127.0.0.1:8999/studio/static/d6fdab8e-c2e1-4965-a689-ee1b1a31e690.png', 4, 39, '39', '2024-08-07 00:00:00', '2024-08-31 00:00:00', NULL, 0, 0, '2024-08-25 21:12:19', '2024-08-25 21:12:19');
COMMIT;

-- ----------------------------
-- Table structure for studio_ccie
-- ----------------------------
DROP TABLE IF EXISTS `studio_ccie`;
CREATE TABLE `studio_ccie` (
  `ccie_id` bigint NOT NULL AUTO_INCREMENT COMMENT '获奖证书主键id',
  `ccie_name` varchar(100) NOT NULL DEFAULT '' COMMENT '证书名称',
  `ccie_img` varchar(255) DEFAULT '' COMMENT '获奖证书图片',
  `ccie_get_time` datetime DEFAULT NULL COMMENT '获奖时间',
  `ccie_think` text COMMENT '经验总结',
  `user_id` bigint DEFAULT NULL COMMENT '用户id',
  `inclusion_flag` tinyint DEFAULT '0' COMMENT '收录标志，0表示未收录，1为申请收录，2为收录打回，3为收录通过（可对外展示）',
  `type` tinyint DEFAULT '0' COMMENT '类别字段码，对应sys_dict_type中的dict_type=CCIE_TYPE，0表示其他证书可自定义',
  `type_name` varchar(100) DEFAULT '' COMMENT '自定义证书类别名称（自定义名称type=0的名称也放置其中）',
  PRIMARY KEY (`ccie_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of studio_ccie
-- ----------------------------
BEGIN;
INSERT INTO `studio_ccie` (`ccie_id`, `ccie_name`, `ccie_img`, `ccie_get_time`, `ccie_think`, `user_id`, `inclusion_flag`, `type`, `type_name`) VALUES (1, '证书1', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/2386faa8-98e0-42c1-a91b-f36f7a339982.png', '2022-05-31 00:00:00', '<p>加油</p>', 41, 3, 1, '专利');
INSERT INTO `studio_ccie` (`ccie_id`, `ccie_name`, `ccie_img`, `ccie_get_time`, `ccie_think`, `user_id`, `inclusion_flag`, `type`, `type_name`) VALUES (2, '证书2', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/c99b593a-4ee4-4610-b813-76545542a7dd.png', '2022-06-09 00:00:00', '<p><br></p>', 41, 3, 3, '软著');
INSERT INTO `studio_ccie` (`ccie_id`, `ccie_name`, `ccie_img`, `ccie_get_time`, `ccie_think`, `user_id`, `inclusion_flag`, `type`, `type_name`) VALUES (3, '证书3', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/1a0b4ec0-8bba-4734-975e-12b7391b556f.png', '2022-06-04 00:00:00', '<p>加油呀</p>', 41, 3, 3, '软著');
INSERT INTO `studio_ccie` (`ccie_id`, `ccie_name`, `ccie_img`, `ccie_get_time`, `ccie_think`, `user_id`, `inclusion_flag`, `type`, `type_name`) VALUES (4, '蜡笔小新的专利1', 'http://127.0.0.1:8999/studio/static/75d37a86-d2ef-49fc-b253-b100744824b0.png', '2024-08-06 00:00:00', '<p>好好学习</p>', 39, 1, 1, '专利');
INSERT INTO `studio_ccie` (`ccie_id`, `ccie_name`, `ccie_img`, `ccie_get_time`, `ccie_think`, `user_id`, `inclusion_flag`, `type`, `type_name`) VALUES (5, '蜡笔小新的论文1', 'http://127.0.0.1:8999/studio/static/33ac3d45-0396-4c81-a429-583140ea0277.png', '2024-08-23 00:00:00', NULL, 39, 3, 2, '论文');
INSERT INTO `studio_ccie` (`ccie_id`, `ccie_name`, `ccie_img`, `ccie_get_time`, `ccie_think`, `user_id`, `inclusion_flag`, `type`, `type_name`) VALUES (6, '蜡笔小新的软著1', 'http://127.0.0.1:8999/studio/static/a68da7a3-8c8f-4696-9fe1-13f6403a7e24.png', '2024-08-16 00:00:00', NULL, 39, 3, 3, '软著');
COMMIT;

-- ----------------------------
-- Table structure for studio_pocs
-- ----------------------------
DROP TABLE IF EXISTS `studio_pocs`;
CREATE TABLE `studio_pocs` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `pocs_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '成果名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='成果分类表';

-- ----------------------------
-- Records of studio_pocs
-- ----------------------------
BEGIN;
INSERT INTO `studio_pocs` (`id`, `pocs_name`) VALUES (2, '无人机');
INSERT INTO `studio_pocs` (`id`, `pocs_name`) VALUES (3, 'web系统');
INSERT INTO `studio_pocs` (`id`, `pocs_name`) VALUES (4, '无人车');
COMMIT;

-- ----------------------------
-- Table structure for studio_race
-- ----------------------------
DROP TABLE IF EXISTS `studio_race`;
CREATE TABLE `studio_race` (
  `race_id` bigint NOT NULL AUTO_INCREMENT COMMENT '竞赛主键id',
  `race_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '' COMMENT '竞赛名称',
  `race_members` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT '' COMMENT '竞赛成员（个人就填写一个id，存储参与成员的id，使用,分割）',
  `race_begin_time` datetime DEFAULT NULL COMMENT '竞赛开始时间',
  `race_end_time` datetime DEFAULT NULL COMMENT '竞赛结束时间',
  `race_ccie` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT '' COMMENT '获奖证书图片',
  `race_flag` tinyint(1) DEFAULT '1' COMMENT '标识个人还是团队(1是个人,2是团队)',
  `race_summarize` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '经验总结',
  `inclusion_flag` tinyint DEFAULT '0' COMMENT '收录标志，0表示未收录，1为申请收录，2为收录打回，3为收录通过（可对外展示）',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`race_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of studio_race
-- ----------------------------
BEGIN;
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (1, '竞赛1', '41', '2022-06-09 00:00:00', '2022-06-29 00:00:00', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/956efb84-dae2-47d6-9056-1b05a544463a.png', 1, '<p>好好比赛加油</p>', 3, '2022-06-11 10:09:15', '2024-08-26 00:01:59');
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (2, '竞赛2', '41', '2022-05-31 00:00:00', '2022-06-17 00:00:00', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/ee8eb365-7f91-41c4-ba28-edbe9ac64b90.png', 1, '<p>加油</p>', 0, '2022-06-11 10:09:36', '2022-06-13 08:59:00');
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (3, '团体赛', '29,32,30,33,41', '2022-06-08 00:00:00', '2022-06-17 00:00:00', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/0ad449b0-079d-4789-bf28-87ed6a47dd48.png', 2, '<p>大家努力取得好成绩</p>', 3, '2022-06-11 10:10:19', '2024-08-26 05:17:23');
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (4, '团队赛2', '29,30,40', '2022-06-01 00:00:00', '2022-06-16 00:00:00', 'http://127.0.0.1:8999/profile/e96f446f-58e2-4d19-92ff-e60fe15fca5a.png', 2, '<p>参赛记录</p>', 0, '2022-06-11 10:19:09', NULL);
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (5, '竞赛1', '38', '2022-06-02 00:00:00', '2022-06-22 00:00:00', 'http://127.0.0.1:8999/profile/3c6f5115-256c-4273-9168-91e2412c91ed.png', 1, NULL, 0, '2022-06-11 10:20:28', NULL);
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (6, '竞赛22', '38', '2022-06-10 00:00:00', '2022-06-25 00:00:00', 'http://127.0.0.1:8999/profile/e3914b5f-ae97-4cef-ac16-8f471e517a62.png', 1, NULL, 0, '2022-06-11 10:20:48', NULL);
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (7, '竞赛111', '47', '2022-06-17 00:00:00', '2022-06-23 00:00:00', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/90c0a95a-18dd-44d7-b5f8-b52515d29ba0.png', 1, NULL, 0, '2022-06-11 10:21:38', '2022-06-13 09:00:50');
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (8, '竞赛1111', '35', '2019-05-01 00:00:00', '2019-08-24 00:00:00', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/bee92646-b52b-4fe9-bf79-f7a4a919a77a.png', 1, NULL, 0, '2022-06-11 10:22:31', '2022-06-13 08:59:39');
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (9, '竞赛111', '35', '2020-06-01 00:00:00', '2020-06-25 00:00:00', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/73fac460-1c4a-40a3-8ac1-ca6e45a20608.png', 1, '<p>加油</p>', 0, '2022-06-12 10:18:12', '2022-06-13 08:59:59');
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (10, '竞赛3', '35', '2021-06-01 00:00:00', '2021-06-18 00:00:00', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/4bef549f-ccf7-47a0-97a3-be46831782e7.png', 1, '<p>加油</p>', 0, '2022-06-12 10:22:51', '2022-06-13 09:00:18');
INSERT INTO `studio_race` (`race_id`, `race_name`, `race_members`, `race_begin_time`, `race_end_time`, `race_ccie`, `race_flag`, `race_summarize`, `inclusion_flag`, `create_time`, `update_time`) VALUES (11, '创新创业训练计划项目', '41', '2024-08-06 00:00:00', '2024-08-30 00:00:00', 'http://127.0.0.1:8999/studio/static/e8914e80-ccbb-4eae-bad8-12beb6a192fd.png', 1, '<p>很不错的一次：创新创业训练计划项目团队竞赛</p>', 1, '2024-08-26 13:40:56', NULL);
COMMIT;

-- ----------------------------
-- Table structure for studio_resource
-- ----------------------------
DROP TABLE IF EXISTS `studio_resource`;
CREATE TABLE `studio_resource` (
  `res_id` bigint NOT NULL AUTO_INCREMENT COMMENT '资源主键id',
  `res_url` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT '' COMMENT '资源url地址',
  `res_flag` tinyint(1) DEFAULT '1' COMMENT '资源标识(1表示竞赛团队)',
  `res_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT '' COMMENT '图片上传名称',
  `create_time` datetime DEFAULT NULL COMMENT '上传时间',
  `table_id` bigint DEFAULT NULL COMMENT '关联表id(其他表主键id)',
  PRIMARY KEY (`res_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of studio_resource
-- ----------------------------
BEGIN;
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (13, 'http://127.0.0.1:8999/profile/fad77e4b-edd3-4dd5-a1e8-ea6fd3d8a66e.jpg', 1, 'fad77e4b-edd3-4dd5-a1e8-ea6fd3d8a66e.jpg', '2022-06-11 10:19:09', 4);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (14, 'http://127.0.0.1:8999/profile/18f012ff-39c7-4d26-9332-184256a96e2c.jpg', 1, '18f012ff-39c7-4d26-9332-184256a96e2c.jpg', '2022-06-11 10:19:09', 4);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (15, 'http://127.0.0.1:8999/profile/5ec1ae9e-f3c9-4a4f-9f28-3eabd4fc8bb3.jpg', 1, '5ec1ae9e-f3c9-4a4f-9f28-3eabd4fc8bb3.jpg', '2022-06-11 10:19:09', 4);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (16, 'http://127.0.0.1:8999/profile/4f543f04-f65c-41cd-898b-85be6f672eda.jpg', 1, '4f543f04-f65c-41cd-898b-85be6f672eda.jpg', '2022-06-11 10:20:28', 5);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (17, 'http://127.0.0.1:8999/profile/5ebd433a-a19b-4a23-8431-7c43b6604f04.jpg', 1, '5ebd433a-a19b-4a23-8431-7c43b6604f04.jpg', '2022-06-11 10:20:28', 5);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (18, 'http://127.0.0.1:8999/profile/adcba92b-b0e7-4f23-a4d0-7ef1be1e7f2b.jpg', 1, 'adcba92b-b0e7-4f23-a4d0-7ef1be1e7f2b.jpg', '2022-06-11 10:20:28', 5);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (19, 'http://127.0.0.1:8999/profile/e88fdd2f-4d32-4a46-8ef3-d6d06931574f.jpg', 1, 'e88fdd2f-4d32-4a46-8ef3-d6d06931574f.jpg', '2022-06-11 10:20:48', 6);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (20, 'http://127.0.0.1:8999/profile/e52e3fa6-1783-4aa1-a379-1e707dadadbd.jpg', 1, 'e52e3fa6-1783-4aa1-a379-1e707dadadbd.jpg', '2022-06-11 10:20:48', 6);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (21, 'http://127.0.0.1:8999/profile/050685a5-ddf0-4308-9952-6b48472b9bdf.jpg', 1, '050685a5-ddf0-4308-9952-6b48472b9bdf.jpg', '2022-06-11 10:20:48', 6);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (43, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/886ae690-1b00-4ce0-92dd-293ad682924a.jpg', 1, '886ae690-1b00-4ce0-92dd-293ad682924a.jpg', '2022-06-13 08:59:00', 2);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (44, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/158a5e96-92c8-4325-94b3-64fa98570b95.jpg', 1, '158a5e96-92c8-4325-94b3-64fa98570b95.jpg', '2022-06-13 08:59:00', 2);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (45, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/18f04e5d-f08f-43c4-9f42-e7107f770db7.jpg', 1, '18f04e5d-f08f-43c4-9f42-e7107f770db7.jpg', '2022-06-13 08:59:00', 2);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (46, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/85b4c064-1bb8-4bf8-90c8-aed9b25843e5.jpg', 1, '85b4c064-1bb8-4bf8-90c8-aed9b25843e5.jpg', '2022-06-13 08:59:39', 8);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (47, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/942ebbe6-da4b-4cc1-9859-3ef8c253ce0d.jpg', 1, '942ebbe6-da4b-4cc1-9859-3ef8c253ce0d.jpg', '2022-06-13 08:59:39', 8);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (48, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/1ac4faf6-3107-43c4-b105-1ed345977e45.jpg', 1, '1ac4faf6-3107-43c4-b105-1ed345977e45.jpg', '2022-06-13 08:59:39', 8);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (49, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/8bb637f4-ae5c-417e-8161-5ce9132426e5.jpg', 1, '8bb637f4-ae5c-417e-8161-5ce9132426e5.jpg', '2022-06-13 08:59:59', 9);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (50, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/d08e2bf4-f048-4e8d-9e03-db66e62ba837.jpg', 1, 'd08e2bf4-f048-4e8d-9e03-db66e62ba837.jpg', '2022-06-13 08:59:59', 9);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (51, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/5d815874-50f7-44df-b70c-c1514d04e4d4.jpg', 1, '5d815874-50f7-44df-b70c-c1514d04e4d4.jpg', '2022-06-13 08:59:59', 9);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (52, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/92fc3c4b-dc9c-4796-8a9f-db35e276942e.jpg', 1, '92fc3c4b-dc9c-4796-8a9f-db35e276942e.jpg', '2022-06-13 09:00:18', 10);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (53, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/362522dc-6273-477e-89ec-b9dba637e918.jpg', 1, '362522dc-6273-477e-89ec-b9dba637e918.jpg', '2022-06-13 09:00:18', 10);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (54, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/668af52b-98d2-4b1f-8926-ddf423153aa0.jpg', 1, '668af52b-98d2-4b1f-8926-ddf423153aa0.jpg', '2022-06-13 09:00:18', 10);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (55, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/67b829ef-ca83-437d-9afd-1f082eac01fb.jpg', 1, '67b829ef-ca83-437d-9afd-1f082eac01fb.jpg', '2022-06-13 09:00:50', 7);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (56, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/c0894ee4-0b9b-4fd5-99f9-8bbb0a17537c.jpg', 1, 'c0894ee4-0b9b-4fd5-99f9-8bbb0a17537c.jpg', '2022-06-13 09:00:50', 7);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (57, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/958a7e5e-c6e9-4691-866b-16066bb2a53a.jpg', 1, '958a7e5e-c6e9-4691-866b-16066bb2a53a.jpg', '2022-06-13 09:00:50', 7);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (58, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/7a4665d8-d973-4759-972a-d3e43a567fcb.jpg', 1, '7a4665d8-d973-4759-972a-d3e43a567fcb.jpg', '2024-08-26 00:01:59', 1);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (59, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/f9bb24f6-3182-403c-9bdc-aa0f3b331579.jpg', 1, 'f9bb24f6-3182-403c-9bdc-aa0f3b331579.jpg', '2024-08-26 00:01:59', 1);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (60, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/3737a231-1d5f-4d02-a576-aa6d533b8bca.jpg', 1, '3737a231-1d5f-4d02-a576-aa6d533b8bca.jpg', '2024-08-26 00:01:59', 1);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (64, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/3b4cb11a-3fc7-4b13-9dc6-b7be8f2dfa08.jpg', 1, '3b4cb11a-3fc7-4b13-9dc6-b7be8f2dfa08.jpg', '2024-08-26 05:17:23', 3);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (65, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/19e9e46d-026e-4aca-8ed8-6d6fb309f4bf.jpg', 1, '19e9e46d-026e-4aca-8ed8-6d6fb309f4bf.jpg', '2024-08-26 05:17:23', 3);
INSERT INTO `studio_resource` (`res_id`, `res_url`, `res_flag`, `res_name`, `create_time`, `table_id`) VALUES (66, 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/9d61d437-e359-4f24-a0bb-79aa6a2ac776.jpg', 1, '9d61d437-e359-4f24-a0bb-79aa6a2ac776.jpg', '2024-08-26 05:17:23', 3);
COMMIT;

-- ----------------------------
-- Table structure for studio_think
-- ----------------------------
DROP TABLE IF EXISTS `studio_think`;
CREATE TABLE `studio_think` (
  `think_id` bigint NOT NULL AUTO_INCREMENT COMMENT '个人心得主键id',
  `think_title` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '思考标题',
  `content` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '感悟思考',
  `content_markdown` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '内容（markdown格式）',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '修改时间',
  `user_id` bigint DEFAULT NULL COMMENT '用户主键id',
  PRIMARY KEY (`think_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of studio_think
-- ----------------------------
BEGIN;
INSERT INTO `studio_think` (`think_id`, `think_title`, `content`, `content_markdown`, `create_time`, `update_time`, `user_id`) VALUES (1, '大学历程', '<p>思考总结...</p>', NULL, '2022-06-12 10:27:01', NULL, 41);
INSERT INTO `studio_think` (`think_id`, `think_title`, `content`, `content_markdown`, `create_time`, `update_time`, `user_id`) VALUES (2, '✅2024.8.18图片滚动栏目调研', '<div data-inline-code-theme=\"dark\" data-code-block-theme=\"default\"><h1 data-lines=\"1\" data-sign=\"2f43f522cf874fbf3f78f15f99cc0100\" id=\"%E7%9B%AE%E6%A0%87\" class=\"cherry-highlight-line\"><a href=\"#%E7%9B%AE%E6%A0%87\" class=\"anchor\"></a>目标</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"40cb1f6c5fc296635a6c1076fefcea2a2\">支持cherry markdown语法编辑博文</p><p data-lines=\"2\" data-type=\"br\" data-sign=\"br2\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><h1 data-lines=\"1\" data-sign=\"69833039933ee8e39e2c61f63ead7811\" id=\"%E8%B0%83%E7%A0%94\"><a href=\"#%E8%B0%83%E7%A0%94\" class=\"anchor\"></a>调研</h1><p data-lines=\"3\" data-type=\"p\" data-sign=\"385ad4f027e4fdbfda31fe35c76d8eb23\">Quill富文本编辑器<br>CherryMarkdown (推荐)：<a title=\"https://github.com/Tencent/cherry-markdown\" href=\"https://github.com/Tencent/cherry-markdown\">https://github.com/Tencent/cherry-markdown</a> </p><ul class=\"cherry-list__default\" data-sign=\"899120202ac83ca7dd5d13104bd7cd1e\" data-lines=\"1\"><li class=\"cherry-list-item\"><p>推荐</p></li></ul><p data-lines=\"2\" data-type=\"p\" data-sign=\"4225abab433295e91e01b9bf698dc9382\">Tinymce富文本编辑器：</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"9184587e0d16f6de2290c836813b481d2\">可学习案例：ruo-yi-vue-blog：<a title=\"https://gitee.com/Ning310975876/ruo-yi-vue-blog\" href=\"https://gitee.com/Ning310975876/ruo-yi-vue-blog\">https://gitee.com/Ning310975876/ruo-yi-vue-blog</a> </p><p data-lines=\"2\" data-type=\"br\" data-sign=\"br2\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><h1 data-lines=\"1\" data-sign=\"ec48a1952b5ab45a6767150601f4bdfe\" id=\"%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88\"><a href=\"#%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88\" class=\"anchor\"></a>技术方案</h1><h2 data-lines=\"2\" data-sign=\"2d2136a561e913d7557ebc88004141a2\" id=\"%E5%89%8D%E6%8F%90\"><a href=\"#%E5%89%8D%E6%8F%90\" class=\"anchor\"></a>前提</h2><p data-lines=\"2\" data-type=\"p\" data-sign=\"24097282ce4007dde3a016c0bbbc7ad82\">将studio-ui改造为studio-ui-vite为vite版本，引入cherry-markdown没有报错问题。</p><p data-lines=\"2\" data-type=\"br\" data-sign=\"br2\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><h2 data-lines=\"1\" data-sign=\"2b1911e54e8d99160dab0212934ce757\" id=\"%E5%B7%A5%E4%BD%9C%E9%87%8F%E5%AE%89%E6%8E%92\"><a href=\"#%E5%B7%A5%E4%BD%9C%E9%87%8F%E5%AE%89%E6%8E%92\" class=\"anchor\"></a>工作量安排</h2><p data-lines=\"4\" data-type=\"p\" data-sign=\"1f60a4bd5e3ea3e8bb586424910158fd4\">改造studio_think表<br>改造studio_race表<br>改造studio_ccie表</p><p data-lines=\"2\" data-type=\"br\" data-sign=\"br2\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><h2 data-lines=\"1\" data-sign=\"2df228b46aa345791b2d9c8146666106\" id=\"%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A1%A8%E8%AE%BE%E8%AE%A1\"><a href=\"#%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A1%A8%E8%AE%BE%E8%AE%A1\" class=\"anchor\"></a>数据库表设计</h2><p data-lines=\"2\" data-type=\"p\" data-sign=\"4802d499842b3a228a74a095dfa281932\">针对有包含文本内容编辑的都额外支持一个字段：content_markdown</p><ul class=\"cherry-list__default\" data-sign=\"6804b613b751e99093d0170010cac7d4\" data-lines=\"1\"><li class=\"cherry-list-item\"><p>主要包含两个字段存储博文内容：content（博客文章html）、contentMarkdown（博客文章markdown格式内容）</p></li></ul><blockquote data-lines=\"2\" data-sign=\"4dfc5389e145b7ff87a2c90a834aa1e0_2\">包含有存储内容形式的表如下</blockquote><p data-lines=\"2\" data-type=\"p\" data-sign=\"ccf9330c5baf6a4c6b6595f0b5296b352\">studio_ccie：证书表</p><div data-sign=\"3fd85d75770a003632c8d4e68fa5d3a9\" data-type=\"codeBlock\" data-lines=\"4\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"><span class=\"token operator\">&amp;</span>nbsp<span class=\"token punctuation\">;</span>原字段：ccie_think</span>\n<span class=\"code-line\"><span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token template-punctuation string\">`</span></span>`studio_race：竞赛表</span></code></pre>\n      </div><p data-lines=\"1\" data-type=\"p\" data-sign=\"3f9a3b46d4dc00dccbbd7643a7c61e2f1\">&nbsp;原字段：race_summarize</p><div data-sign=\"f8311bf65925d77848d6cc336809a832\" data-type=\"codeBlock\" data-lines=\"2\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"studio_think：个人思考表\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"></span></code></pre>\n      </div><p data-lines=\"5\" data-type=\"p\" data-sign=\"4e5586bd95654637bd94474ea152dee95\">&nbsp;原字段：content<br>&nbsp;​<br>&nbsp;改造后：<br>&nbsp;content<br>&nbsp;content_markdown</p><div data-sign=\"9d5252bcd07c89980d00839e6fb0eea2\" data-type=\"codeBlock\" data-lines=\"10\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">--</span><span class=\"token operator\">--</span></span>\n<span class=\"code-line\">## 实现步骤</span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\">### <span class=\"token number\">1</span>、引入依赖</span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token keyword\">package</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">json添加依赖：</span></span></code></pre>\n      </div><p data-lines=\"1\" data-type=\"p\" data-sign=\"19c62a3880d4457d814357cabf1f14af1\">&nbsp;\"cherry-markdown\": \"0.8.22\"</p><div data-sign=\"653db37e3ac8b156d30ae452e4d4c461\" data-type=\"codeBlock\" data-lines=\"2\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"安装依赖：\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"></span></code></pre>\n      </div><p data-lines=\"1\" data-type=\"p\" data-sign=\"23dbcbc2583689165bcb78f1a166c4141\">&nbsp;npm install --force</p><div data-sign=\"1e27f135ded1a0865a2ddfec728548fc\" data-type=\"codeBlock\" data-lines=\"6\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"### 2、实现cherry-markdown的vue组件（修改上传接口路径）\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"></span>\n<span class=\"code-line\">在components目录下添加cherry<span class=\"token operator\">-</span>markdown组件：</span>\n<span class=\"code-line\"><span class=\"token operator\">!</span><span class=\"token punctuation\">[</span>image<span class=\"token operator\">-</span><span class=\"token number\">20240907083535373</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">(</span>https<span class=\"token operator\">:</span><span class=\"token operator\">/</span><span class=\"token operator\">/</span>pictured<span class=\"token operator\">-</span>bed<span class=\"token punctuation\">.</span><span class=\"token property-access\">oss</span><span class=\"token operator\">-</span>cn<span class=\"token operator\">-</span>beijing<span class=\"token punctuation\">.</span><span class=\"token property-access\">aliyuncs</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">com</span><span class=\"token operator\">/</span>img<span class=\"token operator\">/</span><span class=\"token number\">2024</span><span class=\"token operator\">/</span><span class=\"token number\">202409070835486</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">png</span><span class=\"token punctuation\">)</span> </span>\n<span class=\"code-line\">修改该组件的上传图片地址：</span></code></pre>\n      </div><p data-lines=\"4\" data-type=\"p\" data-sign=\"83a6637aaa7aa4f9e7742a10a88b185c4\">&nbsp;import commonConfig from \"@/api/common.js\";<br>&nbsp;​<br>&nbsp;// 图片上传路径修改为自己连接<br>&nbsp;request.open(\'POST\', commonConfig.uploadAction) // 上传的图片服务器地址</p><div data-sign=\"de9b124b2145b432ba11230d97b7a250\" data-type=\"codeBlock\" data-lines=\"3\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"![image-20240921012448257](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210124423.png)\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\">修改上传资源之后的markdown语法：</span></code></pre>\n      </div><p data-lines=\"11\" data-type=\"p\" data-sign=\"1ab8c581dc0251c437ac1ba606d71c9811\">&nbsp;if (resp.code === 200) {<br>&nbsp; &nbsp;if (/mp4|avi|rmvb/i.test(resp.fileSuffix)) {<br>&nbsp; &nbsp; &nbsp;imgMdStr = <code>!video[${resp.data.originName}](${resp.data.visitUrl})</code>;<br>&nbsp;  } else if (/mp3/i.test(resp.fileSuffix)) {<br>&nbsp; &nbsp; &nbsp;imgMdStr = <code>!audio[${resp.data.originName}](${resp.data.visitUrl})</code>;<br>&nbsp;  } else if (/bmp|gif|jpg|jpeg|png/i.test(resp.fileSuffix)) {<br>&nbsp; &nbsp; &nbsp;imgMdStr = <code>![${resp.data.originName}](${resp.data.visitUrl})</code><br>&nbsp;  } else {<br>&nbsp; &nbsp; &nbsp;imgMdStr = <code>![${resp.data.originName}](${resp.data.visitUrl})</code><br>&nbsp;  }<br>&nbsp;}</p><div data-sign=\"2848523fcc9422f15533f2de3ae51595\" data-type=\"codeBlock\" data-lines=\"19\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"![image-20240921012619487](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210126575.png)\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">--</span><span class=\"token operator\">--</span></span>\n<span class=\"code-line\">### <span class=\"token number\">3</span>、支持draw<span class=\"token punctuation\">.</span><span class=\"token property-access\">io组件</span></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\">支持引入draw<span class=\"token punctuation\">.</span><span class=\"token property-access\">io：引入该drawio目录</span></span>\n<span class=\"code-line\"><span class=\"token operator\">!</span><span class=\"token punctuation\">[</span>image<span class=\"token operator\">-</span><span class=\"token number\">20240921012715024</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">(</span>https<span class=\"token operator\">:</span><span class=\"token operator\">/</span><span class=\"token operator\">/</span>pictured<span class=\"token operator\">-</span>bed<span class=\"token punctuation\">.</span><span class=\"token property-access\">oss</span><span class=\"token operator\">-</span>cn<span class=\"token operator\">-</span>beijing<span class=\"token punctuation\">.</span><span class=\"token property-access\">aliyuncs</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">com</span><span class=\"token operator\">/</span>img<span class=\"token operator\">/</span><span class=\"token number\">2024</span><span class=\"token operator\">/</span><span class=\"token number\">202409210127173</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">png</span><span class=\"token punctuation\">)</span>  </span>\n<span class=\"code-line\">效果展示：</span>\n<span class=\"code-line\"><span class=\"token operator\">!</span><span class=\"token punctuation\">[</span>image<span class=\"token operator\">-</span><span class=\"token number\">20240921012746159</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">(</span>https<span class=\"token operator\">:</span><span class=\"token operator\">/</span><span class=\"token operator\">/</span>pictured<span class=\"token operator\">-</span>bed<span class=\"token punctuation\">.</span><span class=\"token property-access\">oss</span><span class=\"token operator\">-</span>cn<span class=\"token operator\">-</span>beijing<span class=\"token punctuation\">.</span><span class=\"token property-access\">aliyuncs</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">com</span><span class=\"token operator\">/</span>img<span class=\"token operator\">/</span><span class=\"token number\">2024</span><span class=\"token operator\">/</span><span class=\"token number\">202409210127255</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">png</span><span class=\"token punctuation\">)</span>  </span>\n<span class=\"code-line\">实际打开的时候访问的就是我们对应的<span class=\"token keyword\">public</span>下的目录：</span>\n<span class=\"code-line\"><span class=\"token operator\">!</span><span class=\"token punctuation\">[</span>image<span class=\"token operator\">-</span><span class=\"token number\">20240921012955264</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">(</span>https<span class=\"token operator\">:</span><span class=\"token operator\">/</span><span class=\"token operator\">/</span>pictured<span class=\"token operator\">-</span>bed<span class=\"token punctuation\">.</span><span class=\"token property-access\">oss</span><span class=\"token operator\">-</span>cn<span class=\"token operator\">-</span>beijing<span class=\"token punctuation\">.</span><span class=\"token property-access\">aliyuncs</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">com</span><span class=\"token operator\">/</span>img<span class=\"token operator\">/</span><span class=\"token number\">2024</span><span class=\"token operator\">/</span><span class=\"token number\">202409210129346</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">png</span><span class=\"token punctuation\">)</span> </span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">--</span><span class=\"token operator\">--</span></span>\n<span class=\"code-line\">### <span class=\"token number\">4</span>、支持展示悬浮目录toc</span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\">原始：</span></code></pre>\n      </div><p data-lines=\"4\" data-type=\"p\" data-sign=\"1ba2305e838e04cd1ccf2535f21c208c4\">&nbsp;toc: {<br>&nbsp; &nbsp;/** 默认只渲染一个目录 */<br>&nbsp; &nbsp;allowMultiToc: false<br>&nbsp;},</p><div data-sign=\"007dd62f9fc4236c99eeca202868ee48\" data-type=\"codeBlock\" data-lines=\"2\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"修改后：\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"></span></code></pre>\n      </div><p data-lines=\"4\" data-type=\"p\" data-sign=\"0476a8bed27a931737e94350050816da4\">&nbsp;toc: {<br>&nbsp; &nbsp;updateLocationHash: true, // 要不要更新URL的hash<br>&nbsp; &nbsp;defaultModel: \'pure\', // pure: 精简模式/缩略模式，只有一排小点； full: 完整模式，会展示所有标题<br>&nbsp;},</p><div data-sign=\"364f31b9759beeb936e8c825aebda9d3\" data-type=\"codeBlock\" data-lines=\"8\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">--</span><span class=\"token operator\">--</span></span>\n<span class=\"code-line\">### 前端使用：编辑状态使用cherry<span class=\"token operator\">-</span>markdown的vue组件</span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">**</span>使用方式如下：<span class=\"token operator\">**</span></span></code></pre>\n      </div><p data-lines=\"26\" data-type=\"p\" data-sign=\"1d222ef8ab1c51831a972e07eed22ba026\">&nbsp;&lt;CherryMarkdown ref=\"CherryMarkdown\" :height=\'400\' v-model=\'blogText.contentMarkdown\' &gt;&lt;/CherryMarkdown&gt;<br>&nbsp;​<br>&nbsp;import CherryMarkdown from \'@/components/CherryMarkdown\'<br>&nbsp;​<br>&nbsp; &nbsp; &nbsp;components: {<br>&nbsp; &nbsp; &nbsp; &nbsp;CherryMarkdown<br>&nbsp; &nbsp;  },<br>&nbsp; &nbsp; &nbsp;data() {<br>&nbsp; &nbsp; &nbsp; &nbsp;return {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 博客内容<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;blogText: {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;contentMarkdown: \'\',<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;content: \'\'<br>&nbsp; &nbsp; &nbsp; &nbsp;  }<br>&nbsp; &nbsp; &nbsp;  }<br>&nbsp; &nbsp;  },<br>&nbsp; &nbsp; &nbsp;methods: {<br>&nbsp; &nbsp; &nbsp; &nbsp;submitForm() {<br>&nbsp; &nbsp; &nbsp; &nbsp;    this.setFormContent()<br>&nbsp; &nbsp; &nbsp; &nbsp;    console.log(\"submitForm=&gt;\", this.blogText)<br>&nbsp; &nbsp; &nbsp;  },<br>&nbsp; &nbsp; &nbsp; &nbsp;// 对于markdown的html需要调用对应markdown组件中的getCherryHtml()方法<br>&nbsp; &nbsp; &nbsp; &nbsp;setFormContent(){<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.blogText.content = this.$refs.CherryMarkdown.getCherryHtml()<br>&nbsp; &nbsp; &nbsp;  },<br>&nbsp; &nbsp;  }</p><div data-sign=\"fd38a4e6f9a3af652d9ee912649642a3\" data-type=\"codeBlock\" data-lines=\"10\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"**最终效果演示：**\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\">关注这两个内容即可，分别一个是html内容，另一个是markdown内容：</span>\n<span class=\"code-line\"><span class=\"token operator\">!</span><span class=\"token punctuation\">[</span>image<span class=\"token operator\">-</span><span class=\"token number\">20240921011346778</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">(</span>https<span class=\"token operator\">:</span><span class=\"token operator\">/</span><span class=\"token operator\">/</span>pictured<span class=\"token operator\">-</span>bed<span class=\"token punctuation\">.</span><span class=\"token property-access\">oss</span><span class=\"token operator\">-</span>cn<span class=\"token operator\">-</span>beijing<span class=\"token punctuation\">.</span><span class=\"token property-access\">aliyuncs</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">com</span><span class=\"token operator\">/</span>img<span class=\"token operator\">/</span><span class=\"token number\">2024</span><span class=\"token operator\">/</span><span class=\"token number\">202409210113001</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">png</span><span class=\"token punctuation\">)</span>  </span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">--</span><span class=\"token operator\">--</span></span>\n<span class=\"code-line\">### 前端使用：展示markdown（对外展示）</span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">**</span>代码如下<span class=\"token operator\">**</span>：这里若是仅仅只需要预览，添加该属性即可<span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">:defaultModel=\"\'previewOnly\'\"</span><span class=\"token template-punctuation string\">`</span></span></span></code></pre>\n      </div><p data-lines=\"7\" data-type=\"p\" data-sign=\"44abb91f94b61a29235e381ce6cc55d27\">&nbsp;&lt;CherryMarkdown ref=\"CherryMarkdown\" v-model=\'blog.contentMarkdown\' :defaultModel=\"\'previewOnly\'\"&gt;&lt;/CherryMarkdown&gt;<br>&nbsp;​<br>&nbsp;import CherryMarkdown from \'@/components/CherryMarkdown\'<br>&nbsp;​<br>&nbsp; &nbsp;  components: {<br>&nbsp; &nbsp; &nbsp;  CherryMarkdown<br>&nbsp; &nbsp;  },</p><div data-sign=\"4726142b26f8a9bee3eb3cbcc6ad4f4a\" data-type=\"codeBlock\" data-lines=\"12\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"效果\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">--</span><span class=\"token operator\">--</span></span>\n<span class=\"code-line\"># 问题解决</span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\">## 问题<span class=\"token number\">1</span>：cherrymarkdown不随对应的markdown加载最新的</span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">**</span>场景：<span class=\"token operator\">**</span>例如编辑打开了一个markdown，此时又编辑打开另一个markdown，此时依旧是原先的markdown内容。</span>\n<span class=\"code-line\"><span class=\"token operator\">**</span>修复方式：<span class=\"token operator\">**</span></span>\n<span class=\"code-line\">在cherrymarkdown组件中添加watch：</span></code></pre>\n      </div><p data-lines=\"8\" data-type=\"p\" data-sign=\"94e69a0ab60568e165fba5b1ff8f20a98\">&nbsp; &nbsp; &nbsp;watch: {<br>&nbsp; &nbsp; &nbsp; &nbsp;// 监控 value 属性<br>&nbsp; &nbsp; &nbsp; &nbsp;value(newValue, oldValue) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 当 value 发生变化时，这个函数会被调用<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// console.log(<code>value changed from ${oldValue} to ${newValue}</code>);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.setMarkdown(newValue)<br>&nbsp; &nbsp; &nbsp;  }<br>&nbsp; &nbsp;  }, &nbsp;</p><div data-sign=\"a3eda089ccf486d2a9c340b06e4febb6\" data-type=\"codeBlock\" data-lines=\"10\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"## 问题2：在一个vue文件中使用了两次cherrymarkdown组件，打开一个之后，另一个位置打开时就会出现空情况\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">**</span>场景：<span class=\"token operator\">**</span>首先打开预览总结的，然后打开添加或编辑的，此时就会为空</span>\n<span class=\"code-line\"><span class=\"token operator\">!</span><span class=\"token punctuation\">[</span>image<span class=\"token operator\">-</span><span class=\"token number\">20240922225805994</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">(</span>https<span class=\"token operator\">:</span><span class=\"token operator\">/</span><span class=\"token operator\">/</span>pictured<span class=\"token operator\">-</span>bed<span class=\"token punctuation\">.</span><span class=\"token property-access\">oss</span><span class=\"token operator\">-</span>cn<span class=\"token operator\">-</span>beijing<span class=\"token punctuation\">.</span><span class=\"token property-access\">aliyuncs</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">com</span><span class=\"token operator\">/</span>img<span class=\"token operator\">/</span><span class=\"token number\">2024</span><span class=\"token operator\">/</span><span class=\"token number\">202409222258306</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">png</span><span class=\"token punctuation\">)</span>  </span>\n<span class=\"code-line\"><span class=\"token operator\">!</span><span class=\"token punctuation\">[</span>image<span class=\"token operator\">-</span><span class=\"token number\">20240922225817949</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">(</span>https<span class=\"token operator\">:</span><span class=\"token operator\">/</span><span class=\"token operator\">/</span>pictured<span class=\"token operator\">-</span>bed<span class=\"token punctuation\">.</span><span class=\"token property-access\">oss</span><span class=\"token operator\">-</span>cn<span class=\"token operator\">-</span>beijing<span class=\"token punctuation\">.</span><span class=\"token property-access\">aliyuncs</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">com</span><span class=\"token operator\">/</span>img<span class=\"token operator\">/</span><span class=\"token number\">2024</span><span class=\"token operator\">/</span><span class=\"token number\">202409222258024</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">png</span><span class=\"token punctuation\">)</span>  </span>\n<span class=\"code-line\"><span class=\"token operator\">**</span>解决方案：<span class=\"token operator\">**</span></span>\n<span class=\"code-line\">在对应的对框中的组件里分别加上v<span class=\"token operator\">-</span><span class=\"token keyword control-flow\">if</span>随着预览对话框的是否展示而统一进行变动：</span>\n<span class=\"code-line\"><span class=\"token operator\">!</span><span class=\"token punctuation\">[</span>image<span class=\"token operator\">-</span><span class=\"token number\">20240922230832587</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">(</span>https<span class=\"token operator\">:</span><span class=\"token operator\">/</span><span class=\"token operator\">/</span>pictured<span class=\"token operator\">-</span>bed<span class=\"token punctuation\">.</span><span class=\"token property-access\">oss</span><span class=\"token operator\">-</span>cn<span class=\"token operator\">-</span>beijing<span class=\"token punctuation\">.</span><span class=\"token property-access\">aliyuncs</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">com</span><span class=\"token operator\">/</span>img<span class=\"token operator\">/</span><span class=\"token number\">2024</span><span class=\"token operator\">/</span><span class=\"token number\">202409222308659</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">png</span><span class=\"token punctuation\">)</span>  </span>\n<span class=\"code-line\">此时即可解决该问题。</span></code></pre>\n      </div></div>', '# 目标\n\n支持cherry markdown语法编辑博文\n\n\n----\n# 调研\n\nQuill富文本编辑器\nCherryMarkdown (推荐)：https://github.com/Tencent/cherry-markdown \n- 推荐\n\nTinymce富文本编辑器：\n\n可学习案例：ruo-yi-vue-blog：https://gitee.com/Ning310975876/ruo-yi-vue-blog \n\n\n----\n# 技术方案\n\n## 前提\n\n将studio-ui改造为studio-ui-vite为vite版本，引入cherry-markdown没有报错问题。\n\n\n----\n## 工作量安排\n\n改造studio_think表\n改造studio_race表\n改造studio_ccie表\n\n\n----\n## 数据库表设计\n\n针对有包含文本内容编辑的都额外支持一个字段：content_markdown\n- 主要包含两个字段存储博文内容：content（博客文章html）、contentMarkdown（博客文章markdown格式内容）\n\n>包含有存储内容形式的表如下\n\nstudio_ccie：证书表\n```\n&nbsp;原字段：ccie_think\n```studio_race：竞赛表\n```\n&nbsp;原字段：race_summarize\n```studio_think：个人思考表\n```\n&nbsp;原字段：content\n&nbsp;​\n&nbsp;改造后：\n&nbsp;content\n&nbsp;content_markdown\n```\n\n\n----\n## 实现步骤\n\n### 1、引入依赖\n\npackage.json添加依赖：\n```\n&nbsp;\"cherry-markdown\": \"0.8.22\"\n```安装依赖：\n```\n&nbsp;npm install --force\n```### 2、实现cherry-markdown的vue组件（修改上传接口路径）\n\n在components目录下添加cherry-markdown组件：\n![image-20240907083535373](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409070835486.png) \n修改该组件的上传图片地址：\n```\n&nbsp;import commonConfig from \"@/api/common.js\";\n&nbsp;​\n&nbsp;// 图片上传路径修改为自己连接\n&nbsp;request.open(\'POST\', commonConfig.uploadAction) // 上传的图片服务器地址\n```![image-20240921012448257](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210124423.png)  \n修改上传资源之后的markdown语法：\n```\n&nbsp;if (resp.code === 200) {\n&nbsp; &nbsp;if (/mp4|avi|rmvb/i.test(resp.fileSuffix)) {\n&nbsp; &nbsp; &nbsp;imgMdStr = `!video[${resp.data.originName}](${resp.data.visitUrl})`;\n&nbsp;  } else if (/mp3/i.test(resp.fileSuffix)) {\n&nbsp; &nbsp; &nbsp;imgMdStr = `!audio[${resp.data.originName}](${resp.data.visitUrl})`;\n&nbsp;  } else if (/bmp|gif|jpg|jpeg|png/i.test(resp.fileSuffix)) {\n&nbsp; &nbsp; &nbsp;imgMdStr = `![${resp.data.originName}](${resp.data.visitUrl})`\n&nbsp;  } else {\n&nbsp; &nbsp; &nbsp;imgMdStr = `![${resp.data.originName}](${resp.data.visitUrl})`\n&nbsp;  }\n&nbsp;}\n```![image-20240921012619487](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210126575.png)  \n\n\n----\n### 3、支持draw.io组件\n\n支持引入draw.io：引入该drawio目录\n![image-20240921012715024](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210127173.png)  \n效果展示：\n![image-20240921012746159](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210127255.png)  \n实际打开的时候访问的就是我们对应的public下的目录：\n![image-20240921012955264](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210129346.png) \n\n\n----\n### 4、支持展示悬浮目录toc\n\n原始：\n```\n&nbsp;toc: {\n&nbsp; &nbsp;/** 默认只渲染一个目录 */\n&nbsp; &nbsp;allowMultiToc: false\n&nbsp;},\n```修改后：\n```\n&nbsp;toc: {\n&nbsp; &nbsp;updateLocationHash: true, // 要不要更新URL的hash\n&nbsp; &nbsp;defaultModel: \'pure\', // pure: 精简模式/缩略模式，只有一排小点； full: 完整模式，会展示所有标题\n&nbsp;},\n```\n\n\n----\n### 前端使用：编辑状态使用cherry-markdown的vue组件\n\n**使用方式如下：**\n```\n&nbsp;<CherryMarkdown ref=\"CherryMarkdown\" :height=\'400\' v-model=\'blogText.contentMarkdown\' ></CherryMarkdown>\n&nbsp;​\n&nbsp;import CherryMarkdown from \'@/components/CherryMarkdown\'\n&nbsp;​\n&nbsp; &nbsp; &nbsp;components: {\n&nbsp; &nbsp; &nbsp; &nbsp;CherryMarkdown\n&nbsp; &nbsp;  },\n&nbsp; &nbsp; &nbsp;data() {\n&nbsp; &nbsp; &nbsp; &nbsp;return {\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 博客内容\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;blogText: {\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;contentMarkdown: \'\',\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;content: \'\'\n&nbsp; &nbsp; &nbsp; &nbsp;  }\n&nbsp; &nbsp; &nbsp;  }\n&nbsp; &nbsp;  },\n&nbsp; &nbsp; &nbsp;methods: {\n&nbsp; &nbsp; &nbsp; &nbsp;submitForm() {\n&nbsp; &nbsp; &nbsp; &nbsp;    this.setFormContent()\n&nbsp; &nbsp; &nbsp; &nbsp;    console.log(\"submitForm=>\", this.blogText)\n&nbsp; &nbsp; &nbsp;  },\n&nbsp; &nbsp; &nbsp; &nbsp;// 对于markdown的html需要调用对应markdown组件中的getCherryHtml()方法\n&nbsp; &nbsp; &nbsp; &nbsp;setFormContent(){\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.blogText.content = this.$refs.CherryMarkdown.getCherryHtml()\n&nbsp; &nbsp; &nbsp;  },\n&nbsp; &nbsp;  }\n```**最终效果演示：**\n关注这两个内容即可，分别一个是html内容，另一个是markdown内容：\n![image-20240921011346778](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210113001.png)  \n\n\n----\n### 前端使用：展示markdown（对外展示）\n\n**代码如下**：这里若是仅仅只需要预览，添加该属性即可`:defaultModel=\"\'previewOnly\'\"`\n```\n&nbsp;<CherryMarkdown ref=\"CherryMarkdown\" v-model=\'blog.contentMarkdown\' :defaultModel=\"\'previewOnly\'\"></CherryMarkdown>\n&nbsp;​\n&nbsp;import CherryMarkdown from \'@/components/CherryMarkdown\'\n&nbsp;​\n&nbsp; &nbsp;  components: {\n&nbsp; &nbsp; &nbsp;  CherryMarkdown\n&nbsp; &nbsp;  },\n```效果\n\n\n----\n# 问题解决\n\n## 问题1：cherrymarkdown不随对应的markdown加载最新的\n\n**场景：**例如编辑打开了一个markdown，此时又编辑打开另一个markdown，此时依旧是原先的markdown内容。\n**修复方式：**\n在cherrymarkdown组件中添加watch：\n```\n&nbsp; &nbsp; &nbsp;watch: {\n&nbsp; &nbsp; &nbsp; &nbsp;// 监控 value 属性\n&nbsp; &nbsp; &nbsp; &nbsp;value(newValue, oldValue) {\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 当 value 发生变化时，这个函数会被调用\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// console.log(`value changed from ${oldValue} to ${newValue}`);\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.setMarkdown(newValue)\n&nbsp; &nbsp; &nbsp;  }\n&nbsp; &nbsp;  }, &nbsp;\n```## 问题2：在一个vue文件中使用了两次cherrymarkdown组件，打开一个之后，另一个位置打开时就会出现空情况\n\n**场景：**首先打开预览总结的，然后打开添加或编辑的，此时就会为空\n![image-20240922225805994](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409222258306.png)  \n![image-20240922225817949](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409222258024.png)  \n**解决方案：**\n在对应的对框中的组件里分别加上v-if随着预览对话框的是否展示而统一进行变动：\n![image-20240922230832587](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409222308659.png)  \n此时即可解决该问题。', '2024-05-14 17:05:20', '2024-09-22 15:59:28', 1);
INSERT INTO `studio_think` (`think_id`, `think_title`, `content`, `content_markdown`, `create_time`, `update_time`, `user_id`) VALUES (3, '✅2024.9.7、vue-ui改造为vite工程', '<div data-inline-code-theme=\"red\" data-code-block-theme=\"tomorrow-night\"><dir data-lines=\"1\" data-sign=\"7400505a010db56ba9ffa3d310f61f23-1\" class=\"toc cherry-highlight-line\"><p class=\"toc-title\">目录</p><li class=\"toc-li\"><a class=\"level-1\" href=\"#%E6%8F%8F%E8%BF%B0\">描述</a></li><li class=\"toc-li\"><a class=\"level-1\" href=\"#%E5%89%8D%E6%9C%9F%E6%AD%A5%E9%AA%A4\">前期步骤</a></li><li class=\"toc-li\"><a class=\"level-1\" href=\"#%E6%8A%A5%E9%94%991%EF%BC%9Afailed-to-resolve-import-%E2%80%9Ccomponentslayoutsidebar%E2%80%9C\">报错1：Failed to resolve import “@/components/Layout/SideBar“</a></li><li class=\"toc-li\"><a class=\"level-1\" href=\"#%E6%8A%A5%E9%94%992%EF%BC%9A-error-the-jsx-syntax-extension-is-not-currently-enabled\">报错2： [ERROR] The JSX syntax extension is not currently enabled</a></li><li class=\"toc-li\"><a class=\"level-1\" href=\"#%E6%8A%A5%E9%94%993%EF%BC%9A-internal-server-error-preprocessor-dependency-sass-embedded-not-found-did-you-install-it-try-code8eed46eff0dc5f9d6336a2c2e364156c\">报错3： Internal server error: Preprocessor dependency \"sass-embedded\" not found. Did you install it? Try <code>npm install -D sass-embedded</code>.</a></li><li class=\"toc-li\"><a class=\"level-1\" href=\"#%E6%8A%A5%E9%94%994%EF%BC%9Ainternal-server-error-failed-to-resolve-import-tassetsstylesvariablesscss\">报错4：Internal server error: Failed to resolve import \"~@/assets/styles/variables.scss</a></li><li class=\"toc-li\"><a class=\"level-1\" href=\"#%E6%8A%A5%E9%94%995%EF%BC%9Athe-requested-module-srcassetsstylesvariablesscss-does-not-provide-an-export-named-default\">报错5：The requested module \'/src/assets/styles/variables.scss\' does not provide an export named \'default</a></li><li class=\"toc-li\"><a class=\"level-1\" href=\"#%E6%8A%A5%E9%94%996%EF%BC%9Arequestjs18-uncaught-referenceerror-process-is-not-defined\">报错6：request.js:18 Uncaught ReferenceError: process is not defined</a></li><li class=\"toc-li\"><a class=\"level-1\" href=\"#%E5%85%B6%E4%BB%96%E6%8A%A5%E9%94%99\">其他报错</a></li><li class=\"toc-li\"><a class=\"level-1\" href=\"#%E5%8F%82%E8%80%83%E6%96%87%E7%AB%A0\">参考文章</a></li></dir><h1 data-lines=\"2\" data-sign=\"dd5a69f82f3ae2ccf02bb8ba0e67f2bc\" id=\"%E6%8F%8F%E8%BF%B0\"><a href=\"#%E6%8F%8F%E8%BF%B0\" class=\"anchor\"></a>描述</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"e62060056362cc5e039be50e9839d6342\">全过程视频：<a href=\"https://www.bilibili.com/video/BV1R64y1J7gW\" title=\"https://www.bilibili.com/video/BV1R64y1J7gW\">www.bilibili.com/vid...</a></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"d5424864c5b7d78dea1de87badc315792\">feat_1.2.x_studio-ui_vue2_vite：基于ruoyi-vue的vue2改用为vite全方位指南【2024.9.8】</p><hr data-lines=\"2\" data-sign=\"hr2\"><h1 data-lines=\"2\" data-sign=\"b61794d68ea2645a643cbd92af6f81f2\" id=\"%E5%89%8D%E6%9C%9F%E6%AD%A5%E9%AA%A4\"><a href=\"#%E5%89%8D%E6%9C%9F%E6%AD%A5%E9%AA%A4\" class=\"anchor\"></a>前期步骤</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"172c88ac48decf977488b0ab5fa975442\">重新构建项目，按照原始的四个步骤，创建一个vue2+vite的工程项目。</p><p data-lines=\"3\" data-type=\"br\" data-sign=\"br3\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><h1 data-lines=\"2\" data-sign=\"f98868e1d21783f02b8cc88f7b5cf8db\" id=\"%E6%8A%A5%E9%94%991%EF%BC%9Afailed-to-resolve-import-%E2%80%9Ccomponentslayoutsidebar%E2%80%9C\"><a href=\"#%E6%8A%A5%E9%94%991%EF%BC%9Afailed-to-resolve-import-%E2%80%9Ccomponentslayoutsidebar%E2%80%9C\" class=\"anchor\"></a>报错1：Failed to resolve import “@/components/Layout/SideBar“</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"b2e63eac56d61d6e892f8be0c27f24972\"><img alt=\"image-20240907213753918\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072137209.png\">  </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"418b932eab11d1d142c13da6ed85dbaf2\"><strong>解决方案：</strong></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"521198c248d38e00d8ab20f3722b9fda2\">在vite.config.js文件中添加扩展，保存后重新运行即可</p><div data-sign=\"1d60204071e215e715e29d254e5705b1\" data-type=\"codeBlock\" data-lines=\"4\">\n      <select id=\"code-preview-lang-select\" style=\"display:none;\" class=\"cherry-code-preview-lang-select\">\n      <option value=\"\" selected=\"\" disabled=\"\" hidden=\"\">Choose here</option>\n      <option value=\"javascript\">javascript</option><option value=\"typescript\">typescript</option><option value=\"html\">html</option><option value=\"css\">css</option><option value=\"shell\">shell</option><option value=\"python\">python</option><option value=\"golang\">golang</option><option value=\"java\">java</option><option value=\"c\">c</option><option value=\"c++\">c++</option><option value=\"c#\">c#</option><option value=\"php\">php</option><option value=\"ruby\">ruby</option><option value=\"swift\">swift</option><option value=\"kotlin\">kotlin</option><option value=\"scala\">scala</option><option value=\"rust\">rust</option><option value=\"dart\">dart</option><option value=\"elixir\">elixir</option><option value=\"haskell\">haskell</option><option value=\"lua\">lua</option><option value=\"perl\">perl</option><option value=\"r\">r</option><option value=\"sql\">sql</option>\n    </select>\n      <div class=\"cherry-copy-code-block\" style=\"display:none;\"><i class=\"ch-icon ch-icon-copy\" title=\"copy\"></i></div>\n      <pre class=\"language-js\"><code class=\"language-js wrap\"><span class=\"code-line\"><span class=\"token literal-property property\">extensions</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\'.js\'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\'.jsx\'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\'.ts\'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\'.tsx\'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\'.json\'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\'.vue\'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span></span></code></pre>\n    </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"dcbc99ad45a0956be28564f36ae53f8e2\"><img alt=\"image-20240907213949367\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072139469.png\">  </p><p data-lines=\"3\" data-type=\"br\" data-sign=\"br3\">&nbsp;</p><h1 data-lines=\"1\" data-sign=\"dc1d1cf3239112112baeafcddb8fa53c\" id=\"%E6%8A%A5%E9%94%992%EF%BC%9A-error-the-jsx-syntax-extension-is-not-currently-enabled\"><a href=\"#%E6%8A%A5%E9%94%992%EF%BC%9A-error-the-jsx-syntax-extension-is-not-currently-enabled\" class=\"anchor\"></a>报错2： [ERROR] The JSX syntax extension is not currently enabled</h1><ol class=\"cherry-list__default\" start=\"1\" data-sign=\"aa458126dcc612f93434dfd4f6ca50ad\" data-lines=\"2\"><li><p><strong>安装 JSX 支持依赖</strong></p></li></ol><p data-lines=\"2\" data-type=\"p\" data-sign=\"ef62f0c265d104afc09576ea04fe0e6c2\">首先，你需要安装 <code>@vue/babel-preset-jsx</code> 来支持 JSX 语法。</p><div data-sign=\"2f0c583100a8ebb9307b46849217bccf\" data-type=\"codeBlock\" data-lines=\"4\">\n      <select id=\"code-preview-lang-select\" style=\"display:none;\" class=\"cherry-code-preview-lang-select\">\n      <option value=\"\" selected=\"\" disabled=\"\" hidden=\"\">Choose here</option>\n      <option value=\"javascript\">javascript</option><option value=\"typescript\">typescript</option><option value=\"html\">html</option><option value=\"css\">css</option><option value=\"shell\">shell</option><option value=\"python\">python</option><option value=\"golang\">golang</option><option value=\"java\">java</option><option value=\"c\">c</option><option value=\"c++\">c++</option><option value=\"c#\">c#</option><option value=\"php\">php</option><option value=\"ruby\">ruby</option><option value=\"swift\">swift</option><option value=\"kotlin\">kotlin</option><option value=\"scala\">scala</option><option value=\"rust\">rust</option><option value=\"dart\">dart</option><option value=\"elixir\">elixir</option><option value=\"haskell\">haskell</option><option value=\"lua\">lua</option><option value=\"perl\">perl</option><option value=\"r\">r</option><option value=\"sql\">sql</option>\n    </select>\n      <div class=\"cherry-copy-code-block\" style=\"display:none;\"><i class=\"ch-icon ch-icon-copy\" title=\"copy\"></i></div>\n      <pre class=\"language-bash\"><code class=\"language-bash wrap\"><span class=\"code-line\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> @vue/babel-preset-jsx --save-dev</span></code></pre>\n    </div><ol class=\"cherry-list__default\" start=\"2\" data-sign=\"ebc05d87d9a55264bd723f022fae2529\" data-lines=\"2\"><li><p><strong>配置 Babel</strong></p></li></ol><p data-lines=\"2\" data-type=\"p\" data-sign=\"ab8b3395f3e5035f9f612e9a43a12fc82\">在项目根目录下，创建或更新 <code>babel.config.js</code> 文件，添加 JSX 支持的配置：</p><div data-sign=\"d0972fa3c29b0e13f62aeace5564352c\" data-type=\"codeBlock\" data-lines=\"8\">\n      <select id=\"code-preview-lang-select\" style=\"display:none;\" class=\"cherry-code-preview-lang-select\">\n      <option value=\"\" selected=\"\" disabled=\"\" hidden=\"\">Choose here</option>\n      <option value=\"javascript\" selected=\"selected\">javascript</option><option value=\"typescript\">typescript</option><option value=\"html\">html</option><option value=\"css\">css</option><option value=\"shell\">shell</option><option value=\"python\">python</option><option value=\"golang\">golang</option><option value=\"java\">java</option><option value=\"c\">c</option><option value=\"c++\">c++</option><option value=\"c#\">c#</option><option value=\"php\">php</option><option value=\"ruby\">ruby</option><option value=\"swift\">swift</option><option value=\"kotlin\">kotlin</option><option value=\"scala\">scala</option><option value=\"rust\">rust</option><option value=\"dart\">dart</option><option value=\"elixir\">elixir</option><option value=\"haskell\">haskell</option><option value=\"lua\">lua</option><option value=\"perl\">perl</option><option value=\"r\">r</option><option value=\"sql\">sql</option>\n    </select>\n      <div class=\"cherry-copy-code-block\" style=\"display:none;\"><i class=\"ch-icon ch-icon-copy\" title=\"copy\"></i></div>\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\">module<span class=\"token punctuation\">.</span>exports <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">  <span class=\"token literal-property property\">presets</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span></span>\n<span class=\"code-line\">    <span class=\"token string\">\'@vue/babel-preset-jsx\'</span></span>\n<span class=\"code-line\">  <span class=\"token punctuation\">]</span></span>\n<span class=\"code-line\"><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span></span></code></pre>\n    </div><ol class=\"cherry-list__default\" start=\"3\" data-sign=\"8f6c32f4b99ed67360f09be5abee6e94\" data-lines=\"2\"><li><p><strong>配置 Vite</strong></p></li></ol><p data-lines=\"2\" data-type=\"p\" data-sign=\"64129bf60fabfaef70985d2bdaa6408e2\">由于你正在使用 Vue 2，你需要确保 Vite 插件正确地处理 <code>.vue</code> 文件中的 JSX。这通常涉及到配置 Vite 插件。在你的 <code>vite.config.js</code> 文件中，你需要添加或更新插件配置：</p><div data-sign=\"d29ad446cb98424bcdcbdf8ecc17b9b6\" data-type=\"codeBlock\" data-lines=\"9\">\n      <select id=\"code-preview-lang-select\" style=\"display:none;\" class=\"cherry-code-preview-lang-select\">\n      <option value=\"\" selected=\"\" disabled=\"\" hidden=\"\">Choose here</option>\n      <option value=\"javascript\" selected=\"selected\">javascript</option><option value=\"typescript\">typescript</option><option value=\"html\">html</option><option value=\"css\">css</option><option value=\"shell\">shell</option><option value=\"python\">python</option><option value=\"golang\">golang</option><option value=\"java\">java</option><option value=\"c\">c</option><option value=\"c++\">c++</option><option value=\"c#\">c#</option><option value=\"php\">php</option><option value=\"ruby\">ruby</option><option value=\"swift\">swift</option><option value=\"kotlin\">kotlin</option><option value=\"scala\">scala</option><option value=\"rust\">rust</option><option value=\"dart\">dart</option><option value=\"elixir\">elixir</option><option value=\"haskell\">haskell</option><option value=\"lua\">lua</option><option value=\"perl\">perl</option><option value=\"r\">r</option><option value=\"sql\">sql</option>\n    </select>\n      <div class=\"cherry-copy-code-block\" style=\"display:none;\"><i class=\"ch-icon ch-icon-copy\" title=\"copy\"></i></div>\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> defineConfig <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\'vite\'</span><span class=\"token punctuation\">;</span></span>\n<span class=\"code-line\"><span class=\"token keyword\">import</span> vue <span class=\"token keyword\">from</span> <span class=\"token string\">\'@vitejs/plugin-vue2\'</span><span class=\"token punctuation\">;</span></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token function\">defineConfig</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">  <span class=\"token literal-property property\">plugins</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token function\">vue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span></span>\n<span class=\"code-line\"><span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span></code></pre>\n    </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"d97030caf0923a31fb04317f3008daed2\">确保你已经安装了 <code>@vitejs/plugin-vue2</code>：</p><div data-sign=\"568c2a47e79dc609762d70fc5dc1fb1f\" data-type=\"codeBlock\" data-lines=\"4\">\n      <select id=\"code-preview-lang-select\" style=\"display:none;\" class=\"cherry-code-preview-lang-select\">\n      <option value=\"\" selected=\"\" disabled=\"\" hidden=\"\">Choose here</option>\n      <option value=\"javascript\">javascript</option><option value=\"typescript\">typescript</option><option value=\"html\">html</option><option value=\"css\">css</option><option value=\"shell\">shell</option><option value=\"python\">python</option><option value=\"golang\">golang</option><option value=\"java\">java</option><option value=\"c\">c</option><option value=\"c++\">c++</option><option value=\"c#\">c#</option><option value=\"php\">php</option><option value=\"ruby\">ruby</option><option value=\"swift\">swift</option><option value=\"kotlin\">kotlin</option><option value=\"scala\">scala</option><option value=\"rust\">rust</option><option value=\"dart\">dart</option><option value=\"elixir\">elixir</option><option value=\"haskell\">haskell</option><option value=\"lua\">lua</option><option value=\"perl\">perl</option><option value=\"r\">r</option><option value=\"sql\">sql</option>\n    </select>\n      <div class=\"cherry-copy-code-block\" style=\"display:none;\"><i class=\"ch-icon ch-icon-copy\" title=\"copy\"></i></div>\n      <pre class=\"language-bash\"><code class=\"language-bash wrap\"><span class=\"code-line\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> @vitejs/plugin-vue2 --save-dev</span></code></pre>\n    </div><ol class=\"cherry-list__default\" start=\"4\" data-sign=\"7918c3d0a064e78cd35988c9812766ec\" data-lines=\"2\"><li><p><strong>更新你的 Vue 文件</strong></p></li></ol><p data-lines=\"2\" data-type=\"p\" data-sign=\"e1974759ee332a873cd22c15437ecf192\">确保你的 <code>.vue</code> 文件中的 <code>&lt;script&gt;</code> 标签使用了正确的 <code>lang=\"jsx\"</code> 属性：</p><div data-sign=\"dff28a8ba138630917bfe93e1124ceaf\" data-type=\"codeBlock\" data-lines=\"14\">\n      <select id=\"code-preview-lang-select\" style=\"display:none;\" class=\"cherry-code-preview-lang-select\">\n      <option value=\"\" selected=\"\" disabled=\"\" hidden=\"\">Choose here</option>\n      <option value=\"javascript\">javascript</option><option value=\"typescript\">typescript</option><option value=\"html\">html</option><option value=\"css\">css</option><option value=\"shell\">shell</option><option value=\"python\">python</option><option value=\"golang\">golang</option><option value=\"java\">java</option><option value=\"c\">c</option><option value=\"c++\">c++</option><option value=\"c#\">c#</option><option value=\"php\">php</option><option value=\"ruby\">ruby</option><option value=\"swift\">swift</option><option value=\"kotlin\">kotlin</option><option value=\"scala\">scala</option><option value=\"rust\">rust</option><option value=\"dart\">dart</option><option value=\"elixir\">elixir</option><option value=\"haskell\">haskell</option><option value=\"lua\">lua</option><option value=\"perl\">perl</option><option value=\"r\">r</option><option value=\"sql\">sql</option>\n    </select>\n      <div class=\"cherry-copy-code-block\" style=\"display:none;\"><i class=\"ch-icon ch-icon-copy\" title=\"copy\"></i></div>\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\"><span class=\"token operator\">&lt;</span>template<span class=\"token operator\">&gt;</span></span>\n<span class=\"code-line\">  <span class=\"token operator\">&lt;</span>div<span class=\"token operator\">&gt;</span>My Component<span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">&gt;</span></span>\n<span class=\"code-line\"><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>template<span class=\"token operator\">&gt;</span></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token operator\">&lt;</span>script lang<span class=\"token operator\">=</span><span class=\"token string\">\"jsx\"</span><span class=\"token operator\">&gt;</span></span>\n<span class=\"code-line\"><span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">  <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">h</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">    <span class=\"token keyword\">return</span> <span class=\"token operator\">&lt;</span>div<span class=\"token operator\">&gt;</span>Hello <span class=\"token constant\">JSX</span> <span class=\"token keyword\">in</span> Vue<span class=\"token operator\">!</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">&gt;</span><span class=\"token punctuation\">;</span></span>\n<span class=\"code-line\">  <span class=\"token punctuation\">}</span></span>\n<span class=\"code-line\"><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span></span>\n<span class=\"code-line\"><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>script<span class=\"token operator\">&gt;</span></span></code></pre>\n    </div><ol class=\"cherry-list__default\" start=\"5\" data-sign=\"ad6964f3be76c393e4ee9a1baffef690\" data-lines=\"2\"><li><p>清理并重新启动 Vite</p></li></ol><div data-sign=\"67439b1dcdc1e6a1dd7b4317c9b33af3\" data-type=\"codeBlock\" data-lines=\"6\">\n      <select id=\"code-preview-lang-select\" style=\"display:none;\" class=\"cherry-code-preview-lang-select\">\n      <option value=\"\" selected=\"\" disabled=\"\" hidden=\"\">Choose here</option>\n      <option value=\"javascript\">javascript</option><option value=\"typescript\">typescript</option><option value=\"html\">html</option><option value=\"css\">css</option><option value=\"shell\">shell</option><option value=\"python\">python</option><option value=\"golang\">golang</option><option value=\"java\">java</option><option value=\"c\">c</option><option value=\"c++\">c++</option><option value=\"c#\">c#</option><option value=\"php\">php</option><option value=\"ruby\">ruby</option><option value=\"swift\">swift</option><option value=\"kotlin\">kotlin</option><option value=\"scala\">scala</option><option value=\"rust\">rust</option><option value=\"dart\">dart</option><option value=\"elixir\">elixir</option><option value=\"haskell\">haskell</option><option value=\"lua\">lua</option><option value=\"perl\">perl</option><option value=\"r\">r</option><option value=\"sql\">sql</option>\n    </select>\n      <div class=\"cherry-copy-code-block\" style=\"display:none;\"><i class=\"ch-icon ch-icon-copy\" title=\"copy\"></i></div>\n      <pre class=\"language-bash\"><code class=\"language-bash wrap\"><span class=\"code-line\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> --force</span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token function\">npm</span> run dev</span></code></pre>\n    </div><p data-lines=\"3\" data-type=\"br\" data-sign=\"br3\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><h1 data-lines=\"2\" data-sign=\"b7b2152b6ed6599621288bd7592fb9c9\" id=\"%E6%8A%A5%E9%94%993%EF%BC%9A-internal-server-error-preprocessor-dependency-sass-embedded-not-found-did-you-install-it-try-code8eed46eff0dc5f9d6336a2c2e364156c\"><a href=\"#%E6%8A%A5%E9%94%993%EF%BC%9A-internal-server-error-preprocessor-dependency-sass-embedded-not-found-did-you-install-it-try-code8eed46eff0dc5f9d6336a2c2e364156c\" class=\"anchor\"></a>报错3： Internal server error: Preprocessor dependency \"sass-embedded\" not found. Did you install it? Try <code>npm install -D sass-embedded</code>.</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"c7edcec3dd774d886a571e8b3406fb762\"><img alt=\"image-20240907215555038\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072155121.png\"></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"de5c6817cec8a8f18f78098648386f412\">解决方案：</p><div data-sign=\"0d08db3efb71b54e3550906deeafef70\" data-type=\"codeBlock\" data-lines=\"4\">\n      <select id=\"code-preview-lang-select\" style=\"display:none;\" class=\"cherry-code-preview-lang-select\">\n      <option value=\"\" selected=\"\" disabled=\"\" hidden=\"\">Choose here</option>\n      <option value=\"javascript\">javascript</option><option value=\"typescript\">typescript</option><option value=\"html\">html</option><option value=\"css\">css</option><option value=\"shell\" selected=\"selected\">shell</option><option value=\"python\">python</option><option value=\"golang\">golang</option><option value=\"java\">java</option><option value=\"c\">c</option><option value=\"c++\">c++</option><option value=\"c#\">c#</option><option value=\"php\">php</option><option value=\"ruby\">ruby</option><option value=\"swift\">swift</option><option value=\"kotlin\">kotlin</option><option value=\"scala\">scala</option><option value=\"rust\">rust</option><option value=\"dart\">dart</option><option value=\"elixir\">elixir</option><option value=\"haskell\">haskell</option><option value=\"lua\">lua</option><option value=\"perl\">perl</option><option value=\"r\">r</option><option value=\"sql\">sql</option>\n    </select>\n      <div class=\"cherry-copy-code-block\" style=\"display:none;\"><i class=\"ch-icon ch-icon-copy\" title=\"copy\"></i></div>\n      <pre class=\"language-shell\"><code class=\"language-shell wrap\"><span class=\"code-line\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> -D sass-embedded</span></code></pre>\n    </div><h1 data-lines=\"2\" data-sign=\"48782266a5152cfbb3ad99cf86d5f738\" id=\"%E6%8A%A5%E9%94%994%EF%BC%9Ainternal-server-error-failed-to-resolve-import-tassetsstylesvariablesscss\"><a href=\"#%E6%8A%A5%E9%94%994%EF%BC%9Ainternal-server-error-failed-to-resolve-import-tassetsstylesvariablesscss\" class=\"anchor\"></a>报错4：Internal server error: Failed to resolve import \"~@/assets/styles/variables.scss</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"82ba74eab26a5a499683cd7d5b4f38552\"><img alt=\"image-20240907222146861\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072221924.png\">    </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"f8d958ab22154f01c0fc257092cfd8652\">解决方案：将～去掉即可。</p><hr data-lines=\"2\" data-sign=\"hr2\"><h1 data-lines=\"2\" data-sign=\"4b370b8b40ddc38f0ad6a5b57d380fdd\" id=\"%E6%8A%A5%E9%94%995%EF%BC%9Athe-requested-module-srcassetsstylesvariablesscss-does-not-provide-an-export-named-default\"><a href=\"#%E6%8A%A5%E9%94%995%EF%BC%9Athe-requested-module-srcassetsstylesvariablesscss-does-not-provide-an-export-named-default\" class=\"anchor\"></a>报错5：The requested module \'/src/assets/styles/variables.scss\' does not provide an export named \'default</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"055a4633840706b772dafa51737d094a2\"> <img alt=\"image-20240907224140749\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072241861.png\">  </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"418b932eab11d1d142c13da6ed85dbaf2\"><strong>解决方案：</strong></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"0f62a8908b8f46723d15c229c88e72722\">直接找了ruoyi的vite版本：<a href=\"https://doc.ruoyi.vip/ruoyi-vue/document/xmkz.html#%E5%90%8E%E5%8F%B0%E6%89%A9%E5%B1%95\" title=\"https://doc.ruoyi.vip/ruoyi-vue/document/xmkz.html#%E5%90%8E%E5%8F%B0%E6%89%A9%E5%B1%95\">doc.ruoyi.vip/ruoyi-...</a></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"5c14c99933ec1c2917ceb88fa3729e8f2\">github地址：<a href=\"https://github.com/yangzongzhuan/RuoYi-Vue3\" title=\"https://github.com/yangzongzhuan/RuoYi-Vue3\">github.com/yangzongz...</a></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"4288e5667cc0383e154f37cccb97bc2a2\">最终方案：</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"d1b2623a2fbfcf5c66626ccb5a7240b02\"><img alt=\"image-20240907233032376\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072330641.png\"> </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"72bd99a989049a8d2e76281a680aabd52\">构建一个module.scss文件，貌似就是名字改了下，各位可以试试。</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"3c54dca8dc2d0d077f65a80ffc6d26bc2\">之后在原始文件内容修改引入：</p><div data-sign=\"6a63eb231ed760019a602e4cf71d4499\" data-type=\"codeBlock\" data-lines=\"4\" class=\"\">\n      <select id=\"code-preview-lang-select\" style=\"display:none;\" class=\"cherry-code-preview-lang-select\">\n      <option value=\"\" selected=\"\" disabled=\"\" hidden=\"\">Choose here</option>\n      <option value=\"javascript\">javascript</option><option value=\"typescript\">typescript</option><option value=\"html\">html</option><option value=\"css\">css</option><option value=\"shell\" selected=\"selected\">shell</option><option value=\"python\">python</option><option value=\"golang\">golang</option><option value=\"java\">java</option><option value=\"c\">c</option><option value=\"c++\">c++</option><option value=\"c#\">c#</option><option value=\"php\">php</option><option value=\"ruby\">ruby</option><option value=\"swift\">swift</option><option value=\"kotlin\">kotlin</option><option value=\"scala\">scala</option><option value=\"rust\">rust</option><option value=\"dart\">dart</option><option value=\"elixir\">elixir</option><option value=\"haskell\">haskell</option><option value=\"lua\">lua</option><option value=\"perl\">perl</option><option value=\"r\">r</option><option value=\"sql\">sql</option>\n    </select>\n      <div class=\"cherry-copy-code-block\" style=\"display:none;\"><i class=\"ch-icon ch-icon-copy\" title=\"copy\"></i></div>\n      <pre class=\"language-shell\"><code class=\"language-shell wrap\"><span class=\"code-line\"><span class=\"token function\">import</span> variables from <span class=\"token string\">\'@/assets/styles/variables.module.scss\'</span></span></code></pre>\n    </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"242494ca0683c1481315cb2c3f064a372\">报错解决！</p><hr data-lines=\"2\" data-sign=\"hr2\"><h1 data-lines=\"2\" data-sign=\"a9d00bee91bfa9bcb14f8e44b1ede462\" id=\"%E6%8A%A5%E9%94%996%EF%BC%9Arequestjs18-uncaught-referenceerror-process-is-not-defined\"><a href=\"#%E6%8A%A5%E9%94%996%EF%BC%9Arequestjs18-uncaught-referenceerror-process-is-not-defined\" class=\"anchor\"></a>报错6：request.js:18 Uncaught ReferenceError: process is not defined</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"8f09835818e47654e0d3195a611de1322\"><img alt=\"image-20240907233243870\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072332971.png\">  </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"de5c6817cec8a8f18f78098648386f412\">解决方案：</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"90df7fa3c81b3029e0b0204cdfec09272\">将process.env修改为vite的使用方式：</p><div data-sign=\"81f858bef2ef7fd647eb7d53c9548069\" data-type=\"codeBlock\" data-lines=\"4\">\n      <select id=\"code-preview-lang-select\" style=\"display:none;\" class=\"cherry-code-preview-lang-select\">\n      <option value=\"\" selected=\"\" disabled=\"\" hidden=\"\">Choose here</option>\n      <option value=\"javascript\">javascript</option><option value=\"typescript\">typescript</option><option value=\"html\">html</option><option value=\"css\">css</option><option value=\"shell\" selected=\"selected\">shell</option><option value=\"python\">python</option><option value=\"golang\">golang</option><option value=\"java\">java</option><option value=\"c\">c</option><option value=\"c++\">c++</option><option value=\"c#\">c#</option><option value=\"php\">php</option><option value=\"ruby\">ruby</option><option value=\"swift\">swift</option><option value=\"kotlin\">kotlin</option><option value=\"scala\">scala</option><option value=\"rust\">rust</option><option value=\"dart\">dart</option><option value=\"elixir\">elixir</option><option value=\"haskell\">haskell</option><option value=\"lua\">lua</option><option value=\"perl\">perl</option><option value=\"r\">r</option><option value=\"sql\">sql</option>\n    </select>\n      <div class=\"cherry-copy-code-block\" style=\"display:none;\"><i class=\"ch-icon ch-icon-copy\" title=\"copy\"></i></div>\n      <pre class=\"language-shell\"><code class=\"language-shell wrap\"><span class=\"code-line\">import.meta.env.VITE_API_URL</span></code></pre>\n    </div><hr data-lines=\"2\" data-sign=\"hr2\"><h1 data-lines=\"2\" data-sign=\"5b7c5e83c5a3ef64278195f61fca9bd5\" id=\"%E5%85%B6%E4%BB%96%E6%8A%A5%E9%94%99\"><a href=\"#%E5%85%B6%E4%BB%96%E6%8A%A5%E9%94%99\" class=\"anchor\"></a>其他报错</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"e7a55439215f4d0122a97931f316edd22\">思路：直接找ruoyi的vite版本，然后根据vite版本去进行处理。</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"4b23f1063fe310809ef6c8021299a7842\">ruoyi扩展：<a href=\"https://doc.ruoyi.vip/ruoyi-vue/document/xmkz.html#%E5%90%8E%E5%8F%B0%E6%89%A9%E5%B1%95\" title=\"https://doc.ruoyi.vip/ruoyi-vue/document/xmkz.html#%E5%90%8E%E5%8F%B0%E6%89%A9%E5%B1%95\">doc.ruoyi.vip/ruoyi-...</a></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"2ca5495159aa13a8432c5d3cd0238b852\">vite版本：<a href=\"https://github.com/yangzongzhuan/RuoYi-Vue3\" title=\"https://github.com/yangzongzhuan/RuoYi-Vue3\">github.com/yangzongz...</a></p><hr data-lines=\"2\" data-sign=\"hr2\"><h1 data-lines=\"2\" data-sign=\"4a1e2704dd6bf6d23baa677ee86734d8\" id=\"%E5%8F%82%E8%80%83%E6%96%87%E7%AB%A0\"><a href=\"#%E5%8F%82%E8%80%83%E6%96%87%E7%AB%A0\" class=\"anchor\"></a>参考文章</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"3667a9762834c5ae8d60147f1e4f73452\">[1]. vue 导入组件 Failed to resolve import “@/components/Layout/SideBar“ from “src/views/Layout/LayoutIndex.v：<a href=\"https://blog.csdn.net/2301_78723800/article/details/139454482\" title=\"https://blog.csdn.net/2301_78723800/article/details/139454482\">blog.csdn.net/2301_7...</a></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"00671fb21d31361af9ad84b4dd3d29bc2\">[2]. 记一次成功把Vue2后台项目改造成Vite2的踩坑经历：<a href=\"https://www.yilingsj.com/xwzj/2022-05-15/Migrate-vue2-project-to-vite2.html\" title=\"https://www.yilingsj.com/xwzj/2022-05-15/Migrate-vue2-project-to-vite2.html\">www.yilingsj.com/xwz...</a></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"745437f995dff8948d89e7fc6f198f8e2\">[3]. vue2项目改造集成vite5：<a href=\"https://zhuanlan.zhihu.com/p/693023363\" title=\"https://zhuanlan.zhihu.com/p/693023363\">zhuanlan.zhihu.com/p...</a></p></div>', '[toc]\n\n# 描述\n\n全过程视频：https://www.bilibili.com/video/BV1R64y1J7gW\n\nfeat_1.2.x_studio-ui_vue2_vite：基于ruoyi-vue的vue2改用为vite全方位指南【2024.9.8】\n\n---\n\n# 前期步骤\n\n重新构建项目，按照原始的四个步骤，创建一个vue2+vite的工程项目。\n\n\n\n---\n\n# 报错1：Failed to resolve import “@/components/Layout/SideBar“\n\n![image-20240907213753918](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072137209.png)  \n\n**解决方案：**\n\n在vite.config.js文件中添加扩展，保存后重新运行即可\n\n```js\nextensions: [\'.js\', \'.jsx\', \'.ts\', \'.tsx\', \'.json\', \'.vue\'],\n```\n\n![image-20240907213949367](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072139469.png)  \n\n\n\n# 报错2： [ERROR] The JSX syntax extension is not currently enabled\n\n1. **安装 JSX 支持依赖**\n\n首先，你需要安装 `@vue/babel-preset-jsx` 来支持 JSX 语法。\n\n```bash\nnpm install @vue/babel-preset-jsx --save-dev\n```\n\n2. **配置 Babel**\n\n在项目根目录下，创建或更新 `babel.config.js` 文件，添加 JSX 支持的配置：\n\n```javascript\nmodule.exports = {\n  presets: [\n    \'@vue/babel-preset-jsx\'\n  ]\n};\n```\n\n3. **配置 Vite**\n\n由于你正在使用 Vue 2，你需要确保 Vite 插件正确地处理 `.vue` 文件中的 JSX。这通常涉及到配置 Vite 插件。在你的 `vite.config.js` 文件中，你需要添加或更新插件配置：\n\n```javascript\nimport { defineConfig } from \'vite\';\nimport vue from \'@vitejs/plugin-vue2\';\n\nexport default defineConfig({\n  plugins: [vue()]\n});\n```\n\n确保你已经安装了 `@vitejs/plugin-vue2`：\n\n```bash\nnpm install @vitejs/plugin-vue2 --save-dev\n```\n\n4. **更新你的 Vue 文件**\n\n确保你的 `.vue` 文件中的 `<script>` 标签使用了正确的 `lang=\"jsx\"` 属性：\n\n```vue\n<template>\n  <div>My Component</div>\n</template>\n\n<script lang=\"jsx\">\nexport default {\n  render(h) {\n    return <div>Hello JSX in Vue!</div>;\n  }\n};\n</script>\n```\n\n5. 清理并重新启动 Vite\n\n```bash\nnpm install --force\n\nnpm run dev\n```\n\n\n\n---\n\n# 报错3： Internal server error: Preprocessor dependency \"sass-embedded\" not found. Did you install it? Try `npm install -D sass-embedded`.\n\n![image-20240907215555038](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072155121.png)\n\n解决方案：\n\n```shell\nnpm install -D sass-embedded\n```\n\n# 报错4：Internal server error: Failed to resolve import \"~@/assets/styles/variables.scss\n\n![image-20240907222146861](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072221924.png)    \n\n解决方案：将～去掉即可。\n\n---\n\n# 报错5：The requested module \'/src/assets/styles/variables.scss\' does not provide an export named \'default\n\n ![image-20240907224140749](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072241861.png)  \n\n**解决方案：**\n\n直接找了ruoyi的vite版本：https://doc.ruoyi.vip/ruoyi-vue/document/xmkz.html#%E5%90%8E%E5%8F%B0%E6%89%A9%E5%B1%95\n\ngithub地址：https://github.com/yangzongzhuan/RuoYi-Vue3\n\n最终方案：\n\n![image-20240907233032376](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072330641.png) \n\n构建一个module.scss文件，貌似就是名字改了下，各位可以试试。\n\n之后在原始文件内容修改引入：\n\n```shell\nimport variables from \'@/assets/styles/variables.module.scss\'\n```\n\n报错解决！\n\n---\n\n# 报错6：request.js:18 Uncaught ReferenceError: process is not defined\n\n![image-20240907233243870](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409072332971.png)  \n\n解决方案：\n\n将process.env修改为vite的使用方式：\n\n```shell\nimport.meta.env.VITE_API_URL\n```\n\n---\n\n# 其他报错\n\n思路：直接找ruoyi的vite版本，然后根据vite版本去进行处理。\n\nruoyi扩展：https://doc.ruoyi.vip/ruoyi-vue/document/xmkz.html#%E5%90%8E%E5%8F%B0%E6%89%A9%E5%B1%95\n\nvite版本：https://github.com/yangzongzhuan/RuoYi-Vue3\n\n---\n\n# 参考文章\n\n[1]. vue 导入组件 Failed to resolve import “@/components/Layout/SideBar“ from “src/views/Layout/LayoutIndex.v：https://blog.csdn.net/2301_78723800/article/details/139454482\n\n[2]. 记一次成功把Vue2后台项目改造成Vite2的踩坑经历：https://www.yilingsj.com/xwzj/2022-05-15/Migrate-vue2-project-to-vite2.html\n\n[3]. vue2项目改造集成vite5：https://zhuanlan.zhihu.com/p/693023363', '2024-09-22 14:01:30', '2024-09-22 15:09:45', 1);
INSERT INTO `studio_think` (`think_id`, `think_title`, `content`, `content_markdown`, `create_time`, `update_time`, `user_id`) VALUES (4, '✅2024.8.19成果功能设计、网站数据统计、荣誉资质设计', '<div data-inline-code-theme=\"dark\" data-code-block-theme=\"default\"><div data-lines=\"1\" data-sign=\"96104c29707280e76d24d2d78103f942-1\" class=\"toc cherry-highlight-line\"><p class=\"toc-title\">目录</p><li class=\"toc-li\">\n    <a target=\"_self\" class=\"level-1\" href=\"#%E7%9B%AE%E6%A0%87\">目标</a></li><li class=\"toc-li\">\n    <a target=\"_self\" class=\"level-1\" href=\"#%E8%B0%83%E7%A0%94\">调研</a></li><li class=\"toc-li\">\n    <a target=\"_self\" class=\"level-1\" href=\"#%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88\">技术方案</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-2\" href=\"#%E5%89%8D%E6%8F%90\">前提</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-2\" href=\"#%E5%B7%A5%E4%BD%9C%E9%87%8F%E5%AE%89%E6%8E%92\">工作量安排</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-2\" href=\"#%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A1%A8%E8%AE%BE%E8%AE%A1\">数据库表设计</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-2\" href=\"#%E5%AE%9E%E7%8E%B0%E6%AD%A5%E9%AA%A4\">实现步骤</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-3\" href=\"#1%E3%80%81%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96\">1、引入依赖</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-3\" href=\"#2%E3%80%81%E5%AE%9E%E7%8E%B0cherry-markdown%E7%9A%84vue%E7%BB%84%E4%BB%B6%EF%BC%88%E4%BF%AE%E6%94%B9%E4%B8%8A%E4%BC%A0%E6%8E%A5%E5%8F%A3%E8%B7%AF%E5%BE%84%EF%BC%89\">2、实现cherry-markdown的vue组件（修改上传接口路径）</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-3\" href=\"#3%E3%80%81%E6%94%AF%E6%8C%81drawio%E7%BB%84%E4%BB%B6\">3、支持draw.io组件</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-3\" href=\"#4%E3%80%81%E6%94%AF%E6%8C%81%E5%B1%95%E7%A4%BA%E6%82%AC%E6%B5%AE%E7%9B%AE%E5%BD%95toc\">4、支持展示悬浮目录toc</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-3\" href=\"#%E5%89%8D%E7%AB%AF%E4%BD%BF%E7%94%A8%EF%BC%9A%E7%BC%96%E8%BE%91%E7%8A%B6%E6%80%81%E4%BD%BF%E7%94%A8cherry-markdown%E7%9A%84vue%E7%BB%84%E4%BB%B6\">前端使用：编辑状态使用cherry-markdown的vue组件</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-3\" href=\"#%E5%89%8D%E7%AB%AF%E4%BD%BF%E7%94%A8%EF%BC%9A%E5%B1%95%E7%A4%BAmarkdown%EF%BC%88%E5%AF%B9%E5%A4%96%E5%B1%95%E7%A4%BA%EF%BC%89\">前端使用：展示markdown（对外展示）</a></li><li class=\"toc-li\">\n    <a target=\"_self\" class=\"level-1\" href=\"#%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3\">问题解决</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-2\" href=\"#%E9%97%AE%E9%A2%981%EF%BC%9Acherrymarkdown%E4%B8%8D%E9%9A%8F%E5%AF%B9%E5%BA%94%E7%9A%84markdown%E5%8A%A0%E8%BD%BD%E6%9C%80%E6%96%B0%E7%9A%84\">问题1：cherrymarkdown不随对应的markdown加载最新的</a></li><li class=\"toc-li\">\n    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a target=\"_self\" class=\"level-2\" href=\"#%E9%97%AE%E9%A2%982%EF%BC%9A%E5%9C%A8%E4%B8%80%E4%B8%AAvue%E6%96%87%E4%BB%B6%E4%B8%AD%E4%BD%BF%E7%94%A8%E4%BA%86%E4%B8%A4%E6%AC%A1cherrymarkdown%E7%BB%84%E4%BB%B6%EF%BC%8C%E6%89%93%E5%BC%80%E4%B8%80%E4%B8%AA%E4%B9%8B%E5%90%8E%EF%BC%8C%E5%8F%A6%E4%B8%80%E4%B8%AA%E4%BD%8D%E7%BD%AE%E6%89%93%E5%BC%80%E6%97%B6%E5%B0%B1%E4%BC%9A%E5%87%BA%E7%8E%B0%E7%A9%BA%E6%83%85%E5%86%B5\">问题2：在一个vue文件中使用了两次cherrymarkdown组件，打开一个之后，另一个位置打开时就会出现空情况</a></li></div><p data-lines=\"3\" data-type=\"br\" data-sign=\"br3\">&nbsp;</p><h1 data-lines=\"1\" data-sign=\"2f43f522cf874fbf3f78f15f99cc0100\" id=\"%E7%9B%AE%E6%A0%87\"><a href=\"#%E7%9B%AE%E6%A0%87\" class=\"anchor\"></a>目标</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"40cb1f6c5fc296635a6c1076fefcea2a2\" class=\"\">支持cherry markdown语法编辑博文</p><hr data-lines=\"2\" data-sign=\"hr2\"><h1 data-lines=\"2\" data-sign=\"0499341847a6ef04f24ae5b5c25e499a\" id=\"%E8%B0%83%E7%A0%94\"><a href=\"#%E8%B0%83%E7%A0%94\" class=\"anchor\"></a>调研</h1><p data-lines=\"2\" data-type=\"p\" data-sign=\"4cabbc3c00d39dd38ef1a84bc262c07f2\">Quill富文本编辑器</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"6b5b5dfc3ae6254d71629b2a3d19bfa02\">CherryMarkdown (推荐)：<a title=\"https://github.com/Tencent/cherry-markdown\" href=\"https://github.com/Tencent/cherry-markdown\">https://github.com/Tencent/cherry-markdown</a></p><ul class=\"cherry-list__circle\" data-sign=\"912b8b779562057179f5b0629f641cb0\" data-lines=\"2\"><li class=\"cherry-list-item\"><p>推荐</p></li></ul><p data-lines=\"2\" data-type=\"p\" data-sign=\"4225abab433295e91e01b9bf698dc9382\">Tinymce富文本编辑器：</p><p data-lines=\"3\" data-type=\"br\" data-sign=\"br3\">&nbsp;</p><p data-lines=\"1\" data-type=\"p\" data-sign=\"7d7f15c3333335ec572e84fe5d078f1c1\">可学习案例：ruo-yi-vue-blog：<a title=\"https://gitee.com/Ning310975876/ruo-yi-vue-blog\" href=\"https://gitee.com/Ning310975876/ruo-yi-vue-blog\">https://gitee.com/Ning310975876/ruo-yi-vue-blog</a></p><hr data-lines=\"2\" data-sign=\"hr2\"><h1 data-lines=\"2\" data-sign=\"b4a803a82c2a673d689a887d7fa16f4d\" id=\"%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88\"><a href=\"#%E6%8A%80%E6%9C%AF%E6%96%B9%E6%A1%88\" class=\"anchor\"></a>技术方案</h1><h2 data-lines=\"2\" data-sign=\"2d2136a561e913d7557ebc88004141a2\" id=\"%E5%89%8D%E6%8F%90\"><a href=\"#%E5%89%8D%E6%8F%90\" class=\"anchor\"></a>前提</h2><p data-lines=\"2\" data-type=\"p\" data-sign=\"24097282ce4007dde3a016c0bbbc7ad82\">将studio-ui改造为studio-ui-vite为vite版本，引入cherry-markdown没有报错问题。</p><hr data-lines=\"2\" data-sign=\"hr2\"><h2 data-lines=\"2\" data-sign=\"0488a036b86aba17df2eb638158343ea\" id=\"%E5%B7%A5%E4%BD%9C%E9%87%8F%E5%AE%89%E6%8E%92\"><a href=\"#%E5%B7%A5%E4%BD%9C%E9%87%8F%E5%AE%89%E6%8E%92\" class=\"anchor\"></a>工作量安排</h2><p data-lines=\"2\" data-type=\"p\" data-sign=\"b672c81e7a19a02d7d8459c492b5261b2\">改造studio_think表</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"99f7950cc1ffbe9430a7b4479793041f2\">改造studio_race表</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"4a544869889400fd05df1e97f9ca192a2\">改造studio_ccie表</p><p data-lines=\"3\" data-type=\"br\" data-sign=\"br3\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><h2 data-lines=\"2\" data-sign=\"c62d01781d39c56345bfe46b9fe1a86b\" id=\"%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A1%A8%E8%AE%BE%E8%AE%A1\"><a href=\"#%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A1%A8%E8%AE%BE%E8%AE%A1\" class=\"anchor\"></a>数据库表设计</h2><p data-lines=\"2\" data-type=\"p\" data-sign=\"4802d499842b3a228a74a095dfa281932\">针对有包含文本内容编辑的都额外支持一个字段：content_markdown</p><ul class=\"cherry-list__circle\" data-sign=\"1bcfce1fb0857b76cba31132d8bb0e2d\" data-lines=\"2\"><li class=\"cherry-list-item\"><p>主要包含两个字段存储博文内容：content（博客文章html）、contentMarkdown（博客文章markdown格式内容）</p></li></ul><blockquote data-lines=\"2\" data-sign=\"0ec9698c5d80bab517ef861025d40fff_2\">包含有存储内容形式的表如下</blockquote><p data-lines=\"2\" data-type=\"p\" data-sign=\"ccf9330c5baf6a4c6b6595f0b5296b352\">studio_ccie：证书表</p><div data-sign=\"40c6cd97c1bbe386b71de61e32d7bdea\" data-type=\"codeBlock\" data-lines=\"4\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\">原字段：ccie_think</span></code></pre>\n      </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"4f6946f8c23d30fe46d7c9637d4374e02\">studio_race：竞赛表</p><div data-sign=\"5849b4b3788560a7b0e5966f898a4d5e\" data-type=\"codeBlock\" data-lines=\"4\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"shell\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-shell\"><code class=\"language-shell wrap\"><span class=\"code-line\">原字段：race_summarize</span></code></pre>\n      </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"f5a4b8a0019ca9a7d2e226ff62ea606d2\">studio_think：个人思考表</p><div data-sign=\"964143419a7051078c412341260daca9\" data-type=\"codeBlock\" data-lines=\"8\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-javascript\"><code class=\"language-javascript wrap\"><span class=\"code-line\">原字段：content</span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\">改造后：</span>\n<span class=\"code-line\">content</span>\n<span class=\"code-line\">content_markdown</span></code></pre>\n      </div><p data-lines=\"3\" data-type=\"br\" data-sign=\"br3\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><h2 data-lines=\"2\" data-sign=\"2dbd85801f14e16317af60f762d6219d\" id=\"%E5%AE%9E%E7%8E%B0%E6%AD%A5%E9%AA%A4\"><a href=\"#%E5%AE%9E%E7%8E%B0%E6%AD%A5%E9%AA%A4\" class=\"anchor\"></a>实现步骤</h2><h3 data-lines=\"2\" data-sign=\"7a0be24474a8b875fc1da9a95e5e2cd5\" id=\"1%E3%80%81%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96\"><a href=\"#1%E3%80%81%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96\" class=\"anchor\"></a>1、引入依赖</h3><p data-lines=\"2\" data-type=\"p\" data-sign=\"cba5aae9622d650fd01892d4728019ab2\">package.json添加依赖：</p><div data-sign=\"6f1d8100e66f72c230dfd2890add6ed4\" data-type=\"codeBlock\" data-lines=\"4\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"shell\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-shell\"><code class=\"language-shell wrap\"><span class=\"code-line\"><span class=\"token string\">\"cherry-markdown\"</span><span class=\"token builtin class-name\">:</span> <span class=\"token string\">\"0.8.22\"</span></span></code></pre>\n      </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"8abe97c833118f68994b71c68b9be9662\">安装依赖：</p><div data-sign=\"aa7e92151bf4e16b32d4a2846c9522b3\" data-type=\"codeBlock\" data-lines=\"4\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"shell\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-shell\"><code class=\"language-shell wrap\"><span class=\"code-line\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> <span class=\"token parameter variable\">--force</span></span></code></pre>\n      </div><h3 data-lines=\"2\" data-sign=\"b0991cab5d4ff8ee4300f7ce6d3496ec\" id=\"2%E3%80%81%E5%AE%9E%E7%8E%B0cherry-markdown%E7%9A%84vue%E7%BB%84%E4%BB%B6%EF%BC%88%E4%BF%AE%E6%94%B9%E4%B8%8A%E4%BC%A0%E6%8E%A5%E5%8F%A3%E8%B7%AF%E5%BE%84%EF%BC%89\"><a href=\"#2%E3%80%81%E5%AE%9E%E7%8E%B0cherry-markdown%E7%9A%84vue%E7%BB%84%E4%BB%B6%EF%BC%88%E4%BF%AE%E6%94%B9%E4%B8%8A%E4%BC%A0%E6%8E%A5%E5%8F%A3%E8%B7%AF%E5%BE%84%EF%BC%89\" class=\"anchor\"></a>2、实现cherry-markdown的vue组件（修改上传接口路径）</h3><p data-lines=\"2\" data-type=\"p\" data-sign=\"c146a87771a32fd7e408df4cdf953f272\">在components目录下添加cherry-markdown组件：</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"ffb9a73f075092e6f76daebf0ddd51842\"><img alt=\"image-20240907083535373\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409070835486.png\"> </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"8c837910e71b3ff91ad958f77eb30da52\">修改该组件的上传图片地址：</p><div data-sign=\"301331478460d9634fa34e9165ba52f3\" data-type=\"codeBlock\" data-lines=\"7\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"js\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-js\"><code class=\"language-js wrap\"><span class=\"code-line\"><span class=\"token keyword module\">import</span> <span class=\"token imports\">commonConfig</span> <span class=\"token keyword module\">from</span> <span class=\"token string\">\"@/api/common.js\"</span><span class=\"token punctuation\">;</span></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token comment\">// 图片上传路径修改为自己连接</span></span>\n<span class=\"code-line\">request<span class=\"token punctuation\">.</span><span class=\"token method function property-access\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">\'POST\'</span><span class=\"token punctuation\">,</span> commonConfig<span class=\"token punctuation\">.</span><span class=\"token property-access\">uploadAction</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// 上传的图片服务器地址</span></span></code></pre>\n      </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"bc5d72d1e3e3260a6e49840aa8d12ed32\"><img alt=\"image-20240921012448257\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210124423.png\">  </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"1d57740c6363302e2e860c86362bf3c52\">修改上传资源之后的markdown语法：</p><div data-sign=\"1d2ad3923ab8a7d05ff39e6ea8a228f7\" data-type=\"codeBlock\" data-lines=\"14\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"js\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-js\"><code class=\"language-js wrap\"><span class=\"code-line\"><span class=\"token keyword control-flow\">if</span> <span class=\"token punctuation\">(</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">code</span> <span class=\"token operator\">===</span> <span class=\"token number\">200</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">  <span class=\"token keyword control-flow\">if</span> <span class=\"token punctuation\">(</span><span class=\"token regex\"><span class=\"token regex-delimiter\">/</span><span class=\"token regex-source language-regex\">mp4<span class=\"token alternation keyword\">|</span>avi<span class=\"token alternation keyword\">|</span>rmvb</span><span class=\"token regex-delimiter\">/</span><span class=\"token regex-flags\">i</span></span><span class=\"token punctuation\">.</span><span class=\"token method function property-access\">test</span><span class=\"token punctuation\">(</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">fileSuffix</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">    imgMdStr <span class=\"token operator\">=</span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">!video[</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">data</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">originName</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">](</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">data</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">visitUrl</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">)</span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">;</span></span>\n<span class=\"code-line\">  <span class=\"token punctuation\">}</span> <span class=\"token keyword control-flow\">else</span> <span class=\"token keyword control-flow\">if</span> <span class=\"token punctuation\">(</span><span class=\"token regex\"><span class=\"token regex-delimiter\">/</span><span class=\"token regex-source language-regex\">mp3</span><span class=\"token regex-delimiter\">/</span><span class=\"token regex-flags\">i</span></span><span class=\"token punctuation\">.</span><span class=\"token method function property-access\">test</span><span class=\"token punctuation\">(</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">fileSuffix</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">    imgMdStr <span class=\"token operator\">=</span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">!audio[</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">data</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">originName</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">](</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">data</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">visitUrl</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">)</span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">;</span></span>\n<span class=\"code-line\">  <span class=\"token punctuation\">}</span> <span class=\"token keyword control-flow\">else</span> <span class=\"token keyword control-flow\">if</span> <span class=\"token punctuation\">(</span><span class=\"token regex\"><span class=\"token regex-delimiter\">/</span><span class=\"token regex-source language-regex\">bmp<span class=\"token alternation keyword\">|</span>gif<span class=\"token alternation keyword\">|</span>jpg<span class=\"token alternation keyword\">|</span>jpeg<span class=\"token alternation keyword\">|</span>png</span><span class=\"token regex-delimiter\">/</span><span class=\"token regex-flags\">i</span></span><span class=\"token punctuation\">.</span><span class=\"token method function property-access\">test</span><span class=\"token punctuation\">(</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">fileSuffix</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">    imgMdStr <span class=\"token operator\">=</span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">![</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">data</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">originName</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">](</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">data</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">visitUrl</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">)</span><span class=\"token template-punctuation string\">`</span></span></span>\n<span class=\"code-line\">  <span class=\"token punctuation\">}</span> <span class=\"token keyword control-flow\">else</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">    imgMdStr <span class=\"token operator\">=</span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">![</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">data</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">originName</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">](</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>resp<span class=\"token punctuation\">.</span><span class=\"token property-access\">data</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">visitUrl</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">)</span><span class=\"token template-punctuation string\">`</span></span></span>\n<span class=\"code-line\">  <span class=\"token punctuation\">}</span></span>\n<span class=\"code-line\"><span class=\"token punctuation\">}</span></span></code></pre>\n      </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"56b0e191872d16a950fe1858ae703a472\"><img alt=\"image-20240921012619487\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210126575.png\">  </p><hr data-lines=\"2\" data-sign=\"hr2\"><h3 data-lines=\"2\" data-sign=\"40e5e54938a7889ef64075b88d69d44e\" id=\"3%E3%80%81%E6%94%AF%E6%8C%81drawio%E7%BB%84%E4%BB%B6\"><a href=\"#3%E3%80%81%E6%94%AF%E6%8C%81drawio%E7%BB%84%E4%BB%B6\" class=\"anchor\"></a>3、支持draw.io组件</h3><p data-lines=\"2\" data-type=\"p\" data-sign=\"47063584b82363d5854fba228f9707092\">支持引入draw.io：引入该drawio目录</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"706908b768febf2f94c06fd626f248ed2\"><img alt=\"image-20240921012715024\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210127173.png\">  </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"c62b8a2075ce20b79243abf91b6688242\">效果展示：</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"edc0445a44afdac7123364cf2c778fb52\"><img alt=\"image-20240921012746159\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210127255.png\">  </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"99527c360a28650662ac9ddd2e657fd92\">实际打开的时候访问的就是我们对应的public下的目录：</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"e663cf46d7f9cb5d96a753646e3838c52\"><img alt=\"image-20240921012955264\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210129346.png\"> </p><hr data-lines=\"2\" data-sign=\"hr2\"><h3 data-lines=\"2\" data-sign=\"6134d5bc994059b181f8af8f7b512591\" id=\"4%E3%80%81%E6%94%AF%E6%8C%81%E5%B1%95%E7%A4%BA%E6%82%AC%E6%B5%AE%E7%9B%AE%E5%BD%95toc\"><a href=\"#4%E3%80%81%E6%94%AF%E6%8C%81%E5%B1%95%E7%A4%BA%E6%82%AC%E6%B5%AE%E7%9B%AE%E5%BD%95toc\" class=\"anchor\"></a>4、支持展示悬浮目录toc</h3><p data-lines=\"2\" data-type=\"p\" data-sign=\"f55642b76a91c44746efeaec3b6620eb2\">原始：</p><div data-sign=\"61ba2955d126a7c3a5bd52defb857358\" data-type=\"codeBlock\" data-lines=\"7\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"js\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-js\"><code class=\"language-js wrap\"><span class=\"code-line\"><span class=\"token literal-property property\">toc</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">  <span class=\"token doc-comment comment\">/** 默认只渲染一个目录 */</span></span>\n<span class=\"code-line\">  <span class=\"token literal-property property\">allowMultiToc</span><span class=\"token operator\">:</span> <span class=\"token boolean\">false</span></span>\n<span class=\"code-line\"><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span></span></code></pre>\n      </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"59830b78ba8b7284c774bac4e7e5097b2\">修改后：</p><div data-sign=\"86de7ad3d9e7692607b9c9e17e8fd851\" data-type=\"codeBlock\" data-lines=\"7\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"js\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-js\"><code class=\"language-js wrap\"><span class=\"code-line\"><span class=\"token literal-property property\">toc</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">  <span class=\"token literal-property property\">updateLocationHash</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span> <span class=\"token comment\">// 要不要更新URL的hash</span></span>\n<span class=\"code-line\">  <span class=\"token literal-property property\">defaultModel</span><span class=\"token operator\">:</span> <span class=\"token string\">\'pure\'</span><span class=\"token punctuation\">,</span> <span class=\"token comment\">// pure: 精简模式/缩略模式，只有一排小点； full: 完整模式，会展示所有标题</span></span>\n<span class=\"code-line\"><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span></span></code></pre>\n      </div><p data-lines=\"5\" data-type=\"br\" data-sign=\"br5\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><h3 data-lines=\"2\" data-sign=\"fdca07a55c1c2cfc4310d2c99701c687\" id=\"%E5%89%8D%E7%AB%AF%E4%BD%BF%E7%94%A8%EF%BC%9A%E7%BC%96%E8%BE%91%E7%8A%B6%E6%80%81%E4%BD%BF%E7%94%A8cherry-markdown%E7%9A%84vue%E7%BB%84%E4%BB%B6\"><a href=\"#%E5%89%8D%E7%AB%AF%E4%BD%BF%E7%94%A8%EF%BC%9A%E7%BC%96%E8%BE%91%E7%8A%B6%E6%80%81%E4%BD%BF%E7%94%A8cherry-markdown%E7%9A%84vue%E7%BB%84%E4%BB%B6\" class=\"anchor\"></a>前端使用：编辑状态使用cherry-markdown的vue组件</h3><p data-lines=\"2\" data-type=\"p\" data-sign=\"51c91cc7a880ef96b33b88e2fa81185d2\"><strong>使用方式如下：</strong></p><div data-sign=\"174488d8621edcd957c2878b29e68c84\" data-type=\"codeBlock\" data-lines=\"29\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"js\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-js\"><code class=\"language-js wrap\"><span class=\"code-line\"><span class=\"token operator\">&lt;</span><span class=\"token maybe-class-name\">CherryMarkdown</span> ref<span class=\"token operator\">=</span><span class=\"token string\">\"CherryMarkdown\"</span> <span class=\"token operator\">:</span>height<span class=\"token operator\">=</span><span class=\"token string\">\'400\'</span> v<span class=\"token operator\">-</span>model<span class=\"token operator\">=</span><span class=\"token string\">\'blogText.contentMarkdown\'</span> <span class=\"token operator\">&gt;</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span><span class=\"token maybe-class-name\">CherryMarkdown</span><span class=\"token operator\">&gt;</span></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token keyword module\">import</span> <span class=\"token imports\"><span class=\"token maybe-class-name\">CherryMarkdown</span></span> <span class=\"token keyword module\">from</span> <span class=\"token string\">\'@/components/CherryMarkdown\'</span></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\">    <span class=\"token literal-property property\">components</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">      <span class=\"token maybe-class-name\">CherryMarkdown</span></span>\n<span class=\"code-line\">    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span></span>\n<span class=\"code-line\">    <span class=\"token function\">data</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">      <span class=\"token keyword control-flow\">return</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">        <span class=\"token comment\">// 博客内容</span></span>\n<span class=\"code-line\">        <span class=\"token literal-property property\">blogText</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">          <span class=\"token literal-property property\">contentMarkdown</span><span class=\"token operator\">:</span> <span class=\"token string\">\'\'</span><span class=\"token punctuation\">,</span></span>\n<span class=\"code-line\">          <span class=\"token literal-property property\">content</span><span class=\"token operator\">:</span> <span class=\"token string\">\'\'</span></span>\n<span class=\"code-line\">        <span class=\"token punctuation\">}</span></span>\n<span class=\"code-line\">      <span class=\"token punctuation\">}</span></span>\n<span class=\"code-line\">    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span></span>\n<span class=\"code-line\">    <span class=\"token literal-property property\">methods</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">      <span class=\"token function\">submitForm</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">        	<span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token method function property-access\">setFormContent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></span>\n<span class=\"code-line\">        	<span class=\"token console class-name\">console</span><span class=\"token punctuation\">.</span><span class=\"token method function property-access\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"submitForm=&gt;\"</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">blogText</span><span class=\"token punctuation\">)</span></span>\n<span class=\"code-line\">      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span></span>\n<span class=\"code-line\">      <span class=\"token comment\">// 对于markdown的html需要调用对应markdown组件中的getCherryHtml()方法</span></span>\n<span class=\"code-line\">      <span class=\"token function\">setFormContent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">        <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">blogText</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">content</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token property-access\">$refs</span><span class=\"token punctuation\">.</span><span class=\"token property-access\"><span class=\"token maybe-class-name\">CherryMarkdown</span></span><span class=\"token punctuation\">.</span><span class=\"token method function property-access\">getCherryHtml</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></span>\n<span class=\"code-line\">      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span></span>\n<span class=\"code-line\">    <span class=\"token punctuation\">}</span></span></code></pre>\n      </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"9ea023bd9e62430df6c3f978a05279132\"><strong>最终效果演示：</strong></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"80b4e376256900d702c37b6d62457db52\">关注这两个内容即可，分别一个是html内容，另一个是markdown内容：</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"d248a2f11e0df3faa3d6bb4fa8d2f8422\"><img alt=\"image-20240921011346778\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210113001.png\">  </p><hr data-lines=\"2\" data-sign=\"hr2\"><h3 data-lines=\"2\" data-sign=\"87908f65f36ae0a25955b1d7240221a0\" id=\"%E5%89%8D%E7%AB%AF%E4%BD%BF%E7%94%A8%EF%BC%9A%E5%B1%95%E7%A4%BAmarkdown%EF%BC%88%E5%AF%B9%E5%A4%96%E5%B1%95%E7%A4%BA%EF%BC%89\"><a href=\"#%E5%89%8D%E7%AB%AF%E4%BD%BF%E7%94%A8%EF%BC%9A%E5%B1%95%E7%A4%BAmarkdown%EF%BC%88%E5%AF%B9%E5%A4%96%E5%B1%95%E7%A4%BA%EF%BC%89\" class=\"anchor\"></a>前端使用：展示markdown（对外展示）</h3><p data-lines=\"2\" data-type=\"p\" data-sign=\"e1d64598afe6f8067303b9966d9a66bb2\"><strong>代码如下</strong>：这里若是仅仅只需要预览，添加该属性即可<code>:defaultModel=\"\'previewOnly\'\"</code></p><div data-sign=\"e680ef4f0506845119c9b14111623f1a\" data-type=\"codeBlock\" data-lines=\"10\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"shell\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-shell\"><code class=\"language-shell wrap\"><span class=\"code-line\"><span class=\"token operator\">&lt;</span>CherryMarkdown <span class=\"token assign-left variable\">ref</span><span class=\"token operator\">=</span><span class=\"token string\">\"CherryMarkdown\"</span> v-model<span class=\"token operator\">=</span><span class=\"token string\">\'blog.contentMarkdown\'</span> :defaultModel<span class=\"token operator\">=</span><span class=\"token string\">\"\'previewOnly\'\"</span><span class=\"token operator\">&gt;</span><span class=\"token operator\">&lt;</span>/CherryMarkdown<span class=\"token operator\">&gt;</span></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\"><span class=\"token function\">import</span> CherryMarkdown from <span class=\"token string\">\'@/components/CherryMarkdown\'</span></span>\n<span class=\"code-line\"></span>\n<span class=\"code-line\">    components: <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">      CherryMarkdown</span>\n<span class=\"code-line\">    <span class=\"token punctuation\">}</span>,</span></code></pre>\n      </div><p data-lines=\"2\" data-type=\"p\" data-sign=\"c515d52994f0483c38f230a90f9d7ab72\">效果</p><p data-lines=\"7\" data-type=\"br\" data-sign=\"br7\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><h1 data-lines=\"2\" data-sign=\"701b1a5bc31370def6ac7a71d1993493\" id=\"%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3\"><a href=\"#%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3\" class=\"anchor\"></a>问题解决</h1><h2 data-lines=\"2\" data-sign=\"fbcfa4aedd5136219926214d184b2eff\" id=\"%E9%97%AE%E9%A2%981%EF%BC%9Acherrymarkdown%E4%B8%8D%E9%9A%8F%E5%AF%B9%E5%BA%94%E7%9A%84markdown%E5%8A%A0%E8%BD%BD%E6%9C%80%E6%96%B0%E7%9A%84\"><a href=\"#%E9%97%AE%E9%A2%981%EF%BC%9Acherrymarkdown%E4%B8%8D%E9%9A%8F%E5%AF%B9%E5%BA%94%E7%9A%84markdown%E5%8A%A0%E8%BD%BD%E6%9C%80%E6%96%B0%E7%9A%84\" class=\"anchor\"></a>问题1：cherrymarkdown不随对应的markdown加载最新的</h2><p data-lines=\"2\" data-type=\"p\" data-sign=\"2c6e3280e396c1c67fddd5da075040f12\"><strong>场景：</strong>例如编辑打开了一个markdown，此时又编辑打开另一个markdown，此时依旧是原先的markdown内容。</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"656b2c6fae8a3a5590c0180f0e3addc12\"><strong>修复方式：</strong></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"e7a0f654e2275b943f5a48eb890e713e2\">在cherrymarkdown组件中添加watch：</p><div data-sign=\"d639ccda4ae09806424f2dd2676db59c\" data-type=\"codeBlock\" data-lines=\"11\" data-edit-code=\"true\" data-copy-code=\"true\" data-expand-code=\"false\" data-change-lang=\"true\" data-lang=\"js\" style=\"position:relative\" class=\"cherry-code-expand\">\n      <pre class=\"language-js\"><code class=\"language-js wrap\"><span class=\"code-line\">    <span class=\"token literal-property property\">watch</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">      <span class=\"token comment\">// 监控 value 属性</span></span>\n<span class=\"code-line\">      <span class=\"token function\">value</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">newValue<span class=\"token punctuation\">,</span> oldValue</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span></span>\n<span class=\"code-line\">        <span class=\"token comment\">// 当 value 发生变化时，这个函数会被调用</span></span>\n<span class=\"code-line\">        <span class=\"token comment\">// console.log(`value changed from ${oldValue} to ${newValue}`);</span></span>\n<span class=\"code-line\">        <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token method function property-access\">setMarkdown</span><span class=\"token punctuation\">(</span>newValue<span class=\"token punctuation\">)</span></span>\n<span class=\"code-line\">      <span class=\"token punctuation\">}</span></span>\n<span class=\"code-line\">    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>  </span></code></pre>\n      </div><h2 data-lines=\"2\" data-sign=\"7ec50c09b334a9b7359f8a530ca46793\" id=\"%E9%97%AE%E9%A2%982%EF%BC%9A%E5%9C%A8%E4%B8%80%E4%B8%AAvue%E6%96%87%E4%BB%B6%E4%B8%AD%E4%BD%BF%E7%94%A8%E4%BA%86%E4%B8%A4%E6%AC%A1cherrymarkdown%E7%BB%84%E4%BB%B6%EF%BC%8C%E6%89%93%E5%BC%80%E4%B8%80%E4%B8%AA%E4%B9%8B%E5%90%8E%EF%BC%8C%E5%8F%A6%E4%B8%80%E4%B8%AA%E4%BD%8D%E7%BD%AE%E6%89%93%E5%BC%80%E6%97%B6%E5%B0%B1%E4%BC%9A%E5%87%BA%E7%8E%B0%E7%A9%BA%E6%83%85%E5%86%B5\"><a href=\"#%E9%97%AE%E9%A2%982%EF%BC%9A%E5%9C%A8%E4%B8%80%E4%B8%AAvue%E6%96%87%E4%BB%B6%E4%B8%AD%E4%BD%BF%E7%94%A8%E4%BA%86%E4%B8%A4%E6%AC%A1cherrymarkdown%E7%BB%84%E4%BB%B6%EF%BC%8C%E6%89%93%E5%BC%80%E4%B8%80%E4%B8%AA%E4%B9%8B%E5%90%8E%EF%BC%8C%E5%8F%A6%E4%B8%80%E4%B8%AA%E4%BD%8D%E7%BD%AE%E6%89%93%E5%BC%80%E6%97%B6%E5%B0%B1%E4%BC%9A%E5%87%BA%E7%8E%B0%E7%A9%BA%E6%83%85%E5%86%B5\" class=\"anchor\"></a>问题2：在一个vue文件中使用了两次cherrymarkdown组件，打开一个之后，另一个位置打开时就会出现空情况</h2><p data-lines=\"2\" data-type=\"p\" data-sign=\"95d101d1aafdbe4bc1a1b5c84d91e4da2\"><strong>场景：</strong>首先打开预览总结的，然后打开添加或编辑的，此时就会为空</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"93263d7957467c0ae365f949c40ce3192\"><img alt=\"image-20240922225805994\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409222258306.png\">  </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"c8377f50e9e1bdacaccb89ee3ccdbcfc2\"><img alt=\"image-20240922225817949\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409222258024.png\">  </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"418b932eab11d1d142c13da6ed85dbaf2\"><strong>解决方案：</strong></p><p data-lines=\"2\" data-type=\"p\" data-sign=\"0c265b307e86e56d10a7cad6a556e9e02\">在对应的对框中的组件里分别加上v-if随着预览对话框的是否展示而统一进行变动：</p><p data-lines=\"2\" data-type=\"p\" data-sign=\"6415647731a576c84524d91de28d51562\"><img alt=\"image-20240922230832587\" src=\"https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409222308659.png\">  </p><p data-lines=\"2\" data-type=\"p\" data-sign=\"5cf905c1c82b09e57692b0577fa412952\">此时即可解决该问题。</p><p data-lines=\"5\" data-type=\"br\" data-sign=\"br5\">&nbsp;</p><hr data-lines=\"1\" data-sign=\"hr1\"><p data-lines=\"2\" data-type=\"p\" data-sign=\"2b408b00e6114e98f98e8487de8378002\">整理者：长路 时间：2024.9.7</p></div>', '[toc]\n\n\n\n# 目标\n\n支持cherry markdown语法编辑博文\n\n---\n\n# 调研\n\nQuill富文本编辑器\n\nCherryMarkdown (推荐)：https://github.com/Tencent/cherry-markdown\n\n+ 推荐\n\nTinymce富文本编辑器：\n\n\n\n可学习案例：ruo-yi-vue-blog：https://gitee.com/Ning310975876/ruo-yi-vue-blog\n\n---\n\n# 技术方案\n\n## 前提\n\n将studio-ui改造为studio-ui-vite为vite版本，引入cherry-markdown没有报错问题。\n\n---\n\n## 工作量安排\n\n改造studio_think表\n\n改造studio_race表\n\n改造studio_ccie表\n\n\n\n---\n\n## 数据库表设计\n\n针对有包含文本内容编辑的都额外支持一个字段：content_markdown\n\n+ 主要包含两个字段存储博文内容：content（博客文章html）、contentMarkdown（博客文章markdown格式内容）\n\n> 包含有存储内容形式的表如下\n\nstudio_ccie：证书表\n\n```\n原字段：ccie_think\n```\n\nstudio_race：竞赛表\n\n```shell\n原字段：race_summarize\n```\n\nstudio_think：个人思考表\n\n```\n原字段：content\n\n改造后：\ncontent\ncontent_markdown\n```\n\n\n\n---\n\n## 实现步骤\n\n### 1、引入依赖\n\npackage.json添加依赖：\n\n```shell\n\"cherry-markdown\": \"0.8.22\"\n```\n\n安装依赖：\n\n```shell\nnpm install --force\n```\n\n### 2、实现cherry-markdown的vue组件（修改上传接口路径）\n\n在components目录下添加cherry-markdown组件：\n\n![image-20240907083535373](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409070835486.png) \n\n修改该组件的上传图片地址：\n\n```js\nimport commonConfig from \"@/api/common.js\";\n\n// 图片上传路径修改为自己连接\nrequest.open(\'POST\', commonConfig.uploadAction) // 上传的图片服务器地址\n```\n\n![image-20240921012448257](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210124423.png)  \n\n修改上传资源之后的markdown语法：\n\n```js\nif (resp.code === 200) {\n  if (/mp4|avi|rmvb/i.test(resp.fileSuffix)) {\n    imgMdStr = `!video[${resp.data.originName}](${resp.data.visitUrl})`;\n  } else if (/mp3/i.test(resp.fileSuffix)) {\n    imgMdStr = `!audio[${resp.data.originName}](${resp.data.visitUrl})`;\n  } else if (/bmp|gif|jpg|jpeg|png/i.test(resp.fileSuffix)) {\n    imgMdStr = `![${resp.data.originName}](${resp.data.visitUrl})`\n  } else {\n    imgMdStr = `![${resp.data.originName}](${resp.data.visitUrl})`\n  }\n}\n```\n\n![image-20240921012619487](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210126575.png)  \n\n---\n\n### 3、支持draw.io组件\n\n支持引入draw.io：引入该drawio目录\n\n![image-20240921012715024](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210127173.png)  \n\n效果展示：\n\n![image-20240921012746159](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210127255.png)  \n\n实际打开的时候访问的就是我们对应的public下的目录：\n\n![image-20240921012955264](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210129346.png) \n\n---\n\n### 4、支持展示悬浮目录toc\n\n原始：\n\n```js\ntoc: {\n  /** 默认只渲染一个目录 */\n  allowMultiToc: false\n},\n```\n\n修改后：\n\n```js\ntoc: {\n  updateLocationHash: true, // 要不要更新URL的hash\n  defaultModel: \'pure\', // pure: 精简模式/缩略模式，只有一排小点； full: 完整模式，会展示所有标题\n},\n```\n\n\n\n\n\n---\n\n### 前端使用：编辑状态使用cherry-markdown的vue组件\n\n**使用方式如下：**\n\n```js\n<CherryMarkdown ref=\"CherryMarkdown\" :height=\'400\' v-model=\'blogText.contentMarkdown\' ></CherryMarkdown>\n\nimport CherryMarkdown from \'@/components/CherryMarkdown\'\n\n    components: {\n      CherryMarkdown\n    },\n    data() {\n      return {\n        // 博客内容\n        blogText: {\n          contentMarkdown: \'\',\n          content: \'\'\n        }\n      }\n    },\n    methods: {\n      submitForm() {\n        	this.setFormContent()\n        	console.log(\"submitForm=>\", this.blogText)\n      },\n      // 对于markdown的html需要调用对应markdown组件中的getCherryHtml()方法\n      setFormContent(){\n        this.blogText.content = this.$refs.CherryMarkdown.getCherryHtml()\n      },\n    }\n```\n\n**最终效果演示：**\n\n关注这两个内容即可，分别一个是html内容，另一个是markdown内容：\n\n![image-20240921011346778](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409210113001.png)  \n\n---\n\n### 前端使用：展示markdown（对外展示）\n\n**代码如下**：这里若是仅仅只需要预览，添加该属性即可`:defaultModel=\"\'previewOnly\'\"`\n\n```shell\n<CherryMarkdown ref=\"CherryMarkdown\" v-model=\'blog.contentMarkdown\' :defaultModel=\"\'previewOnly\'\"></CherryMarkdown>\n\nimport CherryMarkdown from \'@/components/CherryMarkdown\'\n\n    components: {\n      CherryMarkdown\n    },\n```\n\n效果\n\n\n\n\n\n\n\n---\n\n# 问题解决\n\n## 问题1：cherrymarkdown不随对应的markdown加载最新的\n\n**场景：**例如编辑打开了一个markdown，此时又编辑打开另一个markdown，此时依旧是原先的markdown内容。\n\n**修复方式：**\n\n在cherrymarkdown组件中添加watch：\n\n```js\n    watch: {\n      // 监控 value 属性\n      value(newValue, oldValue) {\n        // 当 value 发生变化时，这个函数会被调用\n        // console.log(`value changed from ${oldValue} to ${newValue}`);\n        this.setMarkdown(newValue)\n      }\n    },  \n```\n\n## 问题2：在一个vue文件中使用了两次cherrymarkdown组件，打开一个之后，另一个位置打开时就会出现空情况\n\n**场景：**首先打开预览总结的，然后打开添加或编辑的，此时就会为空\n\n![image-20240922225805994](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409222258306.png)  \n\n![image-20240922225817949](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409222258024.png)  \n\n**解决方案：**\n\n在对应的对框中的组件里分别加上v-if随着预览对话框的是否展示而统一进行变动：\n\n![image-20240922230832587](https://pictured-bed.oss-cn-beijing.aliyuncs.com/img/2024/202409222308659.png)  \n\n此时即可解决该问题。\n\n\n\n\n\n---\n\n整理者：长路 时间：2024.9.7\n', '2024-09-22 14:13:38', '2024-09-22 16:00:05', 1);
COMMIT;

-- ----------------------------
-- Table structure for sys_config
-- ----------------------------
DROP TABLE IF EXISTS `sys_config`;
CREATE TABLE `sys_config` (
  `config_id` int NOT NULL AUTO_INCREMENT COMMENT '参数主键',
  `config_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '参数名称',
  `config_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '参数键名',
  `config_value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '参数键值',
  `config_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'N' COMMENT '系统内置（Y是 N否）',
  `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`config_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='参数配置表';

-- ----------------------------
-- Records of sys_config
-- ----------------------------
BEGIN;
INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '网站基础配置', 'site.basicConfig', 'eyJpU1BOIjoi5Lqs5YWs572R5a6J5aSHMTEwMDAwMDIwMjMxMjHlj7ciLCJzaXRlQ3JlYXRlVGltZSI6IjIwMjItMDgtMjIiLCJzaXRlVGl0bGUiOiLmoKHlm614eHjlt6XkvZzlnYoiLCJ0ZWFtTG9nbyI6Imh0dHA6Ly9waWN0dXJlZC1iZWR0ZXN0Lm9zcy1jbi1iZWlqaW5nLmFsaXl1bmNzLmNvbS90ZXN0L3N0dWRpby81MjYzYmVlNS1kOGNjLTQzYTctYTE5Yy05NGEyMGFlMmNiMTIucG5nIiwidGVhbVRpdGxlIjoi5qCh5ZuteHh45bel5L2c5Z2KIiwidW5pdExvZ28iOiIiLCJ1bml0TmFtZSI6IuWNl+S6rHh4eOWkp+WtpiJ9', 'N', 'admin', '2024-07-28 20:01:49', 'admin', '2025-02-15 15:45:18', NULL);
INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '网站主页配置', 'site.page.mainConfig', 'eyJiYW5uZXJUYWJsZURhdGEiOlt7ImJhbm5lckltZyI6Imh0dHBzOi8vcGljdHVyZWQtYmVkLm9zcy1jbi1iZWlqaW5nLmFsaXl1bmNzLmNvbS9pbWcvMjAyNC8wNzEucG5nIiwibWFpblRpdGxlIjoi5qyi6L+O5p2l5Yiw5Y2X5LqseHh45bel5L2c5Z2KIiwic3ViVGl0bGUiOiLkuIDnvqTlv5flkIzpgZPlkIjnmoTkurrvvIzkuIDotbfliqDmsrnvvIzkuIDotbflpZTot5HlnKjnkIbmg7PnmoTot6/kuIouLi4ifSx7ImJhbm5lckltZyI6Imh0dHBzOi8vcGljdHVyZWQtYmVkLm9zcy1jbi1iZWlqaW5nLmFsaXl1bmNzLmNvbS9pbWcvMjAyNC8wNzIucG5nIiwibWFpblRpdGxlIjoi5YWz5LqO5oiR5LusIiwic3ViVGl0bGUiOiLmnIDlpb3nmoTlm6LpmJ/vvIzmnIDlpb3nmoTmiJHku6zvvIzkuI3otJ/pn7bljY7vvIzliqrlipvlpYvmlpfjgIIifSx7ImJhbm5lckltZyI6Imh0dHBzOi8vcGljdHVyZWQtYmVkLm9zcy1jbi1iZWlqaW5nLmFsaXl1bmNzLmNvbS9pbWcvMjAyNC8wNzMucG5nIiwibWFpblRpdGxlIjoi5pe25YWJ6L20Iiwic3ViVGl0bGUiOiLml7bpl7TmmK/muKnmn5TnmoTnvr3mr5vvvIzmiorov4flvoDnmoTngbDlsJjovbvovbvlvLnljrvjgIIifSx7ImJhbm5lckltZyI6Imh0dHBzOi8vcGljdHVyZWQtYmVkLm9zcy1jbi1iZWlqaW5nLmFsaXl1bmNzLmNvbS9pbWcvMjAyNC8wNzQucG5nIiwibWFpblRpdGxlIjoi5Zui6ZifIiwic3ViVGl0bGUiOiLmi43nhaflj6rpnIDopoHkuInnp5LvvIzlj6/plIHkvY/nmoTmmK/miJHku6zkuInlubTpnZLmmKXvvIzmhJ/osKLpgYfop4HvvIEifV0sInRlYW1EZXNjcmlwdGlvbiI6Iui/memHjOaYr+WNl+S6rHh4eOW3peS9nOWdiu+8jOWcqOi/memHjOS4jeS7heacieWtpuS5oOehrOS7tu+8jOi/mOacieWtpuS5oOi9r+S7tueahOWwj+S8meS8tOS7rO+8jOaIkeS7rOmDveWcqOWJjei/m+eahOi3r+S4iu+8jOacquadpeWAvOW+l+acn+W+he+8gVxu5bel5L2c5a6k5pyJ552A5Liw5a+M55qE5a2m5Lmg6LWE5rqQ77yM5pyJ552A5Y+v5Lul5biu5Yqp5L2g6Kej5Yaz6Zeu6aKY55qE5a2m6ZW/5a2m5aeQ5Lus5Lul5Y+K5LiT5Lia5oyH5a+86ICB5biI77yM6K6p5L2g5LiN5pat5Zyo5LiT5Lia6aKG5Z+f6L+b6KGM5o6i57Si5ZKM5oyW5o6Y55+l6K+G5a6d6JeP44CCIiwidGVhbU1pc3Npb24iOiLmiormiJHku6znmoTliqrlipvlkoznn6Xor4bvvIzljJbouqvmiJDmnInku7flgLznmoTkuqflk4HvvIzlnKjmnKrmnaXnianogZTnvZHpoobln5/lvIDmi5Plh7rkuIDniYfmlrDnmoTlpKnlnLAuIiwidGVhbVBsYW4iOiLlpJrmlrnkvY3nmoTmianlsZXmioDmnK/mlrnpnaLnmoTkurrmiY3vvIzlsIbmg7Pms5Xov5vooYzokL3lrp4uXG7kuIDliIfku6XlkITkvY3lkIzlrabnmoTkuKrkurrlj5HlsZXkuLrlh4bvvIHvvIHvvIEiLCJ0ZWFtVmlzaW9uIjoi5pyf5pyb5omA5pyJ55qE5oiQ5ZGY6IO95aSf5a2m5pyJ5omA5oiQ77yM5Zyo5ZCE6Ieq55qE6aKG5Z+f5Y+R5YWJ5Y+R5Lqu77yM5Y+W5b6X5LyY56eA55qE5oiQ57upLiJ9', 'N', 'admin', '2024-07-30 22:44:24', 'admin', '2025-02-15 15:46:04', NULL);
INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '网站底部栏目配置', 'site.page.footerConfig', 'eyJicmllZkRlc2NyaXB0aW9uIjoiICAgIOWOu+W5tOWcqOW3peS9nOWupOWBtueEtuWQrOWIsOWFtuS7luW3peS9nOWupOimgeWBmuS4gOS4quWumOe9ke+8jOaOpeedgOi2geedgOS4gOaXtuWFtOi1t+eEtuWQjuS5n+aJvuS6huS4quaooeadv+adpeWBmuS6huS4gOS4quiHquW3seeahOWumOe9keS7peWPiuS4gOS4quWQjuWPsOeuoeeQhuezu+e7n++8jOW9k+aXtueahOWQjuWPsOezu+e7n+WPquacieS4gOS4queZu+W9leOAgeazqOWGjOi/mOacieS4gOS4quaPkOS6pOS4quS6uuS/oeaBr+eahOmhtemdou+8jOS4u+imgeS4uuS6huaWueS+v+WxleekuuWKqOaAgeaxh+aAu+WboumYn+aIkOWRmOOAglxuICAgIOivpeW3peS9nOWupOezu+e7n+S4u+imgemdouWQkeagoeWbreW3peS9nOWupO+8jOWPr+S+m+S4quS6uuWPiuW3peS9nOWupOWboumYn+WtpuS5oOS9v+eUqOOAgiIsImNvbnRhY3RQZXJzb24iOiLpg63pk4Hpk67ogIHluIgiLCJjb250YWN0QWRkcmVzcyI6IuWNl+S6rOW3peeoi+WtpumZouW3peS4muS4reW/g3h45qCLeHjmpbwiLCJjb250YWN0RW1haWwiOiI5Mzk5NzQ4ODNAcXEuY29tIn0=', 'N', 'admin', '2024-07-30 23:12:37', 'admin', '2024-08-11 18:56:15', NULL);
INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, '时光轴配置', 'site.page.timeConfig', 'W3siZGVzY3JpcHRpb24iOiLkuIDot6/pq5jmrYwiLCJ0aXRsZSI6IuWGsuWKsuWNgei2syIsInllYXIiOiIyMDIz5bm0In0seyJkZXNjcmlwdGlvbiI6IueWq+aDheaJk+WHu++8jOe7hOe7h+e6v+S4iuWtpuS5oOOAguWPguS4juS6hnh4eOecgee6p+aKgOiDveernui1m++8jOWkp+WtpueUn+WIm+aWsOWIm+S4muWkp+i1m++8jOaxn+iLj+ecgeWkp+WtpueUn+WIm+aWsOWIm+S4muiuree7g+iuoeWIkumhueebru+8jOS6kuiBlOe9kSvnrYnjgILojrflj5bojaPoqonmnInvvJrlhajlm73lpKflrabnlJ/mlbDlrablu7rmqKHnq57otZvmsZ/oi4/nnIHkuIDnrYnlpZbvvIzlkI7lj7B3ZWLjgIFhcHDova/okZfvvIzlpJrkuKrnoJTnqbbmgKfor77popjnu5Ppopjor4HkuabvvIzmsZ/oi4/nnIHlpKflrabnlJ/liJvmlrDliJvkuJrorq3nu4PorqHliJLpobnnm67kvJjnp4Dnu5PpopjnrYnjgIIiLCJ0aXRsZSI6IuWGjeS4i+S4gOWfjiIsInllYXIiOiIyMDIy5bm0In0seyJkZXNjcmlwdGlvbiI6IuWPguS4juS6hueJqeiBlOe9keecgee6p+aKgOiDveernui1m++8jOWkp+WtpueUn+WIm+aWsOWIm+S4muWkp+i1m++8jOS6uuW3peaZuuiDveaKgOacr+acjeWKoeaKgOiDveWkp+i1m++8jOS6kuiBlOe9kSvnrYnlpJrpobnmr5TotZvjgILojrflj5ZOQi1JT1Tkv6Hlj7fmo4DmtYvku6rova/okZfvvIzmsZ/oi4/nnIHlpKflrabnlJ/liJvmlrDliJvkuJrorq3nu4PorqHliJLpobnnm67kvJjnp4DlpZbnrYkiLCJ0aXRsZSI6IuWInemcsumUi+iKkiIsInllYXIiOiIyMDIx5bm0In0seyJkZXNjcmlwdGlvbiI6IuWtpuagoeivhOWuoeWPluW+l+W3peS9je+8jOiOt+ecgeeJqeiBlOe9keWkp+i1m+KAnOaWsOWkp+mZhuadr+KAneS6jOetieWlluOAgeecgee6p+iuoeeul+acuuiuvuiuoeWkp+i1m+S4ieetieWlluetiSIsInRpdGxlIjoi5YaN6L+b5LiA5q2lIiwieWVhciI6IjIwMjDlubQifSx7ImRlc2NyaXB0aW9uIjoi6I635b6X5LqG54mp6IGU572R5aSn6LWb5LiJ562J5aWW44CB6K6h566X5py66K6+6K6h5aSn6LWb5LiA562J5aWW5LiA562J5aWW562J6K645aSa5aWW6aG5IiwidGl0bGUiOiLlsI/mnInmiJDlsLEiLCJ5ZWFyIjoiMjAxOeW5tCJ9LHsiZGVzY3JpcHRpb24iOiLlnKh4eOernui1m+OAgeWkp+WtpueUn+WIm+aWsOWIm+S4muWkp+i1m+etieavlOi1m+S4reW8gOWni+W0remcsuWktOinkiIsInRpdGxlIjoi5Yid5Ye66IyF5bqQIiwieWVhciI6IjIwMTctMjAxOOW5tCJ9XQ==', 'N', 'admin', '2024-07-30 23:19:23', 'admin', '2025-02-15 15:46:22', NULL);
INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (5, '文件上传配置选项', 'site.upload.option', 'InNpdGUudXBsb2FkLm9zcyI=', 'N', 'admin', '2024-07-31 07:54:20', 'admin', '2024-10-01 01:00:51', NULL);
INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (6, '本地文件上传配置', 'site.upload.file', 'eyJmaWxlVXBsb2FkRGlyIjoiL1VzZXJzL2VkeS9jaGFuZ2x1X3dvcmtzcGFjZS/lt6XkvZzlrqTliY3lkI7lj7Dns7vnu58v5byA5rqQ6aG555uuL3N0dWRpby12dWUvdXBsb2FkLyIsImlwIjoiMTI3LjAuMC4xIiwicG9ydCI6Ijg5OTkiLCJwcm90b2NvbCI6Imh0dHAiLCJ2aXNpdFBhdGgiOiIvc3R1ZGlvL3N0YXRpYy8ifQ==', 'N', 'admin', '2024-08-01 00:12:18', 'admin', '2024-09-17 13:22:45', NULL);
INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (7, 'OSS资源上传配置', 'site.upload.oss', 'eyJlbmRwb2ludCI6IjEiLCJhY2Nlc3NLZXlJZCI6IjEiLCJhY2Nlc3NLZXlTZWNyZXQiOiIxIiwiYnVja2V0TmFtZSI6IjEiLCJrZXkiOiIxIn0=', 'N', 'admin', '2024-08-01 00:16:44', 'admin', '2024-08-01 00:18:45', NULL);
INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (8, '技术栈配置', 'site.page.skillConfig', 'W3sic2tpbGxOYW1lIjoib3BlbkNWIiwic2tpbGxQZXJjZW50YWdlIjoxMDB9LHsic2tpbGxOYW1lIjoiSmF2YSIsInNraWxsUGVyY2VudGFnZSI6NjB9LHsic2tpbGxOYW1lIjoi572R56uZ5byA5Y+RIiwic2tpbGxQZXJjZW50YWdlIjozMH0seyJza2lsbE5hbWUiOiLkuIrkvY3mnLoiLCJza2lsbFBlcmNlbnRhZ2UiOjYwfV0=', 'N', 'admin', '2024-09-15 20:27:11', 'admin', '2024-09-15 22:33:43', NULL);
INSERT INTO `sys_config` (`config_id`, `config_name`, `config_key`, `config_value`, `config_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (9, '网站参数-邀请码', 'site.params.invitecode', 'IkVkc2Zhc2YxMiI=', 'Y', 'admin', '2024-11-23 12:09:30', 'admin', '2024-11-23 23:27:28', NULL);
COMMIT;

-- ----------------------------
-- Table structure for sys_dict_data
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict_data`;
CREATE TABLE `sys_dict_data` (
  `dict_code` bigint NOT NULL AUTO_INCREMENT COMMENT '字典编码',
  `dict_sort` int DEFAULT '0' COMMENT '字典排序',
  `dict_label` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '字典标签',
  `dict_value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '字典键值',
  `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '字典类型',
  `css_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '样式属性（其他样式扩展）',
  `list_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '表格回显样式',
  `is_default` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'N' COMMENT '是否默认（Y是 N否）',
  `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '状态（0正常 1停用）',
  `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`dict_code`) USING BTREE,
  KEY `fk_sys_dict_data_sys_dict_data_1` (`dict_type`) USING BTREE,
  CONSTRAINT `fk_sys_dict_data_sys_dict_data_1` FOREIGN KEY (`dict_type`) REFERENCES `sys_dict_type` (`dict_type`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='字典数据表';

-- ----------------------------
-- Records of sys_dict_data
-- ----------------------------
BEGIN;
INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, 1, '专利', '1', 'CCIE_TYPE', '', '', 'Y', '0', 'admin', '2024-08-24 22:20:14', '', NULL, '证书类别-专利');
INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, 2, '论文', '2', 'CCIE_TYPE', '', '', 'Y', '0', 'admin', '2024-08-24 22:20:14', '', NULL, '证书类别-论文');
INSERT INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, 3, '软著', '3', 'CCIE_TYPE', '', '', 'Y', '0', 'admin', '2024-08-24 22:20:14', '', NULL, '证书类别-软著');
COMMIT;

-- ----------------------------
-- Table structure for sys_dict_type
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict_type`;
CREATE TABLE `sys_dict_type` (
  `dict_id` bigint NOT NULL AUTO_INCREMENT COMMENT '字典主键',
  `dict_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '字典名称',
  `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '字典类型',
  `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '状态（0正常 1停用）',
  `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`dict_id`) USING BTREE,
  UNIQUE KEY `dict_type` (`dict_type`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='字典类型表';

-- ----------------------------
-- Records of sys_dict_type
-- ----------------------------
BEGIN;
INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '证书专业资质类别', 'CCIE_TYPE', '0', 'admin', '2024-08-24 22:20:14', '', NULL, '证书专业资质类别');
COMMIT;

-- ----------------------------
-- Table structure for sys_menu
-- ----------------------------
DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` (
  `menu_id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单ID',
  `menu_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单名称',
  `parent_id` bigint DEFAULT '0' COMMENT '父菜单ID',
  `order_num` int DEFAULT '0' COMMENT '显示顺序',
  `path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '路由地址',
  `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '组件路径',
  `query` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '路由参数',
  `is_frame` int DEFAULT '1' COMMENT '是否为外链（0是 1否）',
  `is_cache` int DEFAULT '0' COMMENT '是否缓存（0缓存 1不缓存）',
  `menu_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '菜单类型（M目录 C菜单 F按钮）',
  `visible` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '菜单状态（0显示 1隐藏）',
  `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '菜单状态（0正常 1停用）',
  `perms` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '权限标识',
  `icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '#' COMMENT '菜单图标',
  `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注',
  PRIMARY KEY (`menu_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=112 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='菜单权限表';

-- ----------------------------
-- Records of sys_menu
-- ----------------------------
BEGIN;
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '个人数据管理', 0, 1, 'own', NULL, NULL, 1, 0, 'M', '0', '0', '', 'user', 'admin', '2022-03-28 20:40:44', 'admin', '2024-05-20 12:59:29', '个人管理目录');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '工作坊管理', 0, 2, 'team', '', NULL, 1, 0, 'M', '0', '0', '', 'guide', 'admin', '2022-03-28 20:43:19', 'admin', '2024-09-15 22:38:22', '工作室管理目录');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '信息录入', 1, 1, 'info', 'own/info/index', NULL, 1, 0, 'C', '0', '0', NULL, 'people', 'admin', '2022-03-28 20:44:31', '', NULL, '信息录入菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, '我的证书', 1, 4, 'ccie', 'own/ccie/index', NULL, 1, 0, 'C', '0', '0', '', 'system', 'admin', '2022-03-28 20:45:09', 'admin', '2024-09-07 07:46:55', '获奖证书菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (5, '我的竞赛', 1, 3, 'race', 'own/race/index', NULL, 1, 0, 'C', '0', '0', '', 'skill', 'admin', '2022-03-28 20:45:57', 'admin', '2024-09-07 07:47:25', '个人竞赛菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (6, '我的心得', 1, 4, 'think', 'own/think/index', NULL, 1, 0, 'C', '0', '0', '', 'form', 'admin', '2022-03-28 20:47:23', 'admin', '2024-08-20 12:56:50', '个人心得菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (7, '专业管理', 111, 3, 'major', '', NULL, 1, 0, 'C', '0', '1', '', 'tool', 'admin', '2022-03-28 22:12:02', 'admin', '2024-09-07 07:47:55', '专业管理菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (8, '年级管理', 111, 1, 'grade', '', NULL, 1, 0, 'C', '0', '1', '', 'job', 'admin', '2022-03-29 22:56:23', 'admin', '2024-09-07 07:47:43', '年级管理菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (9, '成员管理', 2, 3, 'member', 'team/member/index', NULL, 1, 0, 'C', '0', '0', '', 'peoples', 'admin', '2022-03-29 22:56:25', 'admin', '2024-09-07 00:15:45', '成员管理菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (10, '证书管理', 110, 3, 'ccies', 'team/ccies/index', NULL, 1, 0, 'C', '0', '0', '', 'system', 'admin', '2022-03-29 22:56:27', 'admin', '2024-09-07 07:48:11', '证书管理菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (11, '竞赛管理', 110, 2, 'races', 'team/races/index', NULL, 1, 0, 'C', '0', '0', '', 'skill', 'admin', '2022-03-29 22:56:30', 'admin', '2024-09-07 07:48:07', '竞赛管理菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (12, '系统管理', 0, 3, 'system', NULL, NULL, 1, 0, 'M', '0', '0', NULL, 'system', 'admin', '2022-04-10 21:56:17', '', NULL, '系统管理目录');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (13, '角色管理', 12, 2, 'role', 'system/role/index', NULL, 1, 0, 'C', '0', '0', '', 'peoples', 'admin', '2022-04-10 21:57:23', 'admin', '2022-04-13 08:32:15', '角色管理菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (14, '菜单管理', 12, 1, 'menu', 'system/menu/index', NULL, 1, 0, 'C', '0', '0', '', 'tree-table', 'admin', '2022-04-11 17:11:00', 'admin', '2022-04-13 08:32:19', '菜单管理菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (19, '获取专业年级菜单', 3, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:info:menu', '#', 'admin', '2022-04-11 21:25:28', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (20, '信息录入', 3, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:info:edit', '#', 'admin', '2022-04-11 23:10:38', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (21, '获取用户信息', 3, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:info:query', '#', 'admin', '2022-04-11 23:14:23', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (23, '获取详细信息', 4, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:ccie:query', '#', 'admin', '2022-04-12 09:46:47', 'admin', '2022-04-12 09:51:30', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (24, '新增获奖证书', 4, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:ccie:add', '#', 'admin', '2022-04-12 09:47:08', 'admin', '2022-04-12 09:51:35', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (25, '修改获奖证书', 4, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:ccie:edit', '#', 'admin', '2022-04-12 09:47:28', 'admin', '2022-04-12 09:51:40', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (26, '删除获奖名称', 4, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:ccie:remove', '#', 'admin', '2022-04-12 09:47:54', 'admin', '2022-04-12 09:51:45', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (28, '获取个人竞赛详细信息', 5, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:race:query', '#', 'admin', '2022-04-12 09:48:54', 'admin', '2022-04-12 09:52:31', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (29, '新增个人竞赛', 5, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:race:add', '#', 'admin', '2022-04-12 09:49:17', 'admin', '2022-04-12 09:52:40', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (30, '修改个人竞赛', 5, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:race:edit', '#', 'admin', '2022-04-12 09:49:42', 'admin', '2022-04-12 09:52:44', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (31, '删除个人竞赛', 5, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:race:remove', '#', 'admin', '2022-04-12 09:50:35', 'admin', '2022-04-12 09:52:50', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (33, '获取个人心得详细信息', 6, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:think:query', '#', 'admin', '2022-04-12 09:53:20', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (34, '新增个人心得', 6, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:think:add', '#', 'admin', '2022-04-12 09:53:37', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (35, '修改个人心得', 6, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:think:edit', '#', 'admin', '2022-04-12 09:54:05', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (36, '删除个人心得', 6, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:think:remove', '#', 'admin', '2022-04-12 09:54:21', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (37, '获取专业详细信息', 7, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:major:query', '#', 'admin', '2022-04-12 09:54:58', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (38, '新增专业', 7, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:major:add', '#', 'admin', '2022-04-12 09:55:16', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (39, '修改专业', 7, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:major:edit', '#', 'admin', '2022-04-12 09:55:35', 'admin', '2022-04-12 09:55:39', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (40, '删除专业', 7, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:major:remove', '#', 'admin', '2022-04-12 09:55:57', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (41, '获取年级详细信息', 8, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:grade:query', '#', 'admin', '2022-04-12 09:56:33', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (42, '新增年级', 8, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:grade:add', '#', 'admin', '2022-04-12 09:56:48', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (43, '修改年级', 8, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:grade:edit', '#', 'admin', '2022-04-12 09:57:05', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (44, '删除年级', 8, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:grade:remove', '#', 'admin', '2022-04-12 09:57:20', 'admin', '2022-04-12 09:57:31', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (46, '获取用户姓名与id', 11, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:race:memberoptions', '#', 'admin', '2022-04-12 09:59:16', 'admin', '2022-06-10 14:53:20', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (47, '导出竞赛记录', 11, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:race:export', '#', 'admin', '2022-04-12 09:59:37', 'admin', '2022-06-10 14:53:23', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (48, '证书导出', 10, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:ccie:export', '#', 'admin', '2022-04-12 10:00:55', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (49, '获取成员信息', 9, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:query', '#', 'admin', '2022-04-12 10:01:38', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (50, '修改成员信息', 9, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:edit', '#', 'admin', '2022-04-12 10:02:01', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (51, '注销账号', 9, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:cancelled', '#', 'admin', '2022-04-12 10:02:17', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (52, '激活账号', 9, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:active', '#', 'admin', '2022-04-12 10:02:35', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (53, '转让负责人', 9, 5, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:transfer', '#', 'admin', '2022-04-12 10:03:06', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (54, '重置密码', 9, 6, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:resetpwd', '#', 'admin', '2022-04-12 10:03:34', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (55, '删除账号', 9, 7, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:remove', '#', 'admin', '2022-04-12 10:03:59', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (56, '导出用户信息', 9, 8, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:export', '#', 'admin', '2022-04-12 10:04:21', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (57, '新建账号', 9, 9, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:add', '#', 'admin', '2022-04-12 10:04:40', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (58, '角色状态修改', 13, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:role:changeStatus', '#', 'admin', '2022-04-12 10:16:07', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (59, '查询角色详细', 13, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:role:query', '#', 'admin', '2022-04-12 10:16:22', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (60, '新增角色', 13, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:role:add', '#', 'admin', '2022-04-12 10:16:42', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (61, '修改角色', 13, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:role:edit', '#', 'admin', '2022-04-12 10:16:59', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (62, '查询角色已授权用户列表', 13, 5, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:role:authUser:allocatedList', '#', 'admin', '2022-04-12 10:17:23', 'admin', '2022-04-12 10:17:49', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (63, '取消用户授权角色', 13, 6, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:role:authUser:cancel', '#', 'admin', '2022-04-12 10:17:44', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (64, '批量取消用户授权角色', 13, 7, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:role:authUser:cancelAll', '#', 'admin', '2022-04-12 10:18:05', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (65, '查询角色未授权用户列表', 13, 8, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:role:authUser:unallocatedList', '#', 'admin', '2022-04-12 10:18:28', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (66, '授权多个选择用户', 13, 9, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:role:authUser:selectAll', '#', 'admin', '2022-04-12 10:18:53', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (67, '查询菜单详细', 14, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:menu:query', '#', 'admin', '2022-04-12 10:19:24', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (68, '添加菜单', 14, 2, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:menu:add', '#', 'admin', '2022-04-12 10:19:48', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (69, '修改菜单', 14, 3, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:menu:edit', '#', 'admin', '2022-04-12 10:20:17', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (70, '删除菜单', 14, 4, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:menu:remove', '#', 'admin', '2022-04-12 10:20:29', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (71, '根据角色id获取菜单', 14, 5, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:menu:roleMenuTree', '#', 'admin', '2022-04-12 10:21:20', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (72, '查询菜单下拉树结构', 14, 6, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:menu:treeselect', '#', 'admin', '2022-04-12 10:21:38', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (73, '列表查询', 4, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:ccie:list', '#', 'admin', '2022-04-12 11:04:03', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (74, '个人竞赛列表查询', 5, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:race:list', '#', 'admin', '2022-04-12 11:04:42', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (75, '个人心得列表查询', 6, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:think:list', '#', 'admin', '2022-04-12 11:05:03', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (76, '专业列表查询', 7, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:major:list', '#', 'admin', '2022-04-12 11:05:25', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (77, '年级列表查询', 8, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:grade:list', '#', 'admin', '2022-04-12 11:05:53', 'admin', '2022-04-12 11:06:03', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (78, '列表查询', 11, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:race:list', '#', 'admin', '2022-04-12 11:06:31', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (79, '证书列表查询', 10, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:ccie:list', '#', 'admin', '2022-04-12 11:07:13', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (80, '成员列表查询', 9, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:list', '#', 'admin', '2022-04-12 11:07:44', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (81, '列表查询', 13, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:role:list', '#', 'admin', '2022-04-12 11:08:17', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (82, '查询菜单列表', 14, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:menu:list', '#', 'admin', '2022-04-12 11:08:44', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (83, '获取竞赛的参赛成员信息', 5, 5, '', NULL, NULL, 1, 0, 'F', '0', '0', 'own:race:members', '#', 'admin', '2022-04-12 15:27:22', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (84, '备份数据', 9, 10, '', NULL, NULL, 1, 0, 'F', '0', '0', 'team:member:backup', '#', 'admin', '2022-06-03 09:38:03', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (85, '学院管理', 111, 2, 'academy', '', NULL, 1, 0, 'C', '0', '1', '', 'education', 'admin', '2024-05-28 14:57:16', 'admin', '2024-09-07 07:47:51', '学院菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (86, '学院查询', 85, 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'team:academy:query', '#', 'admin', '2024-05-28 14:57:16', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (87, '学院新增', 85, 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'team:academy:add', '#', 'admin', '2024-05-28 14:57:16', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (88, '学院修改', 85, 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'team:academy:edit', '#', 'admin', '2024-05-28 14:57:16', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (89, '学院删除', 85, 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'team:academy:remove', '#', 'admin', '2024-05-28 14:57:16', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (90, '学院导出', 85, 6, '#', '', NULL, 1, 0, 'F', '0', '0', 'team:academy:export', '#', 'admin', '2024-05-28 14:57:16', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (91, '学院列表查询', 85, 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'team:academy:list', '#', 'admin', '2024-05-29 10:57:16', 'admin', '2024-05-29 10:57:16', '学院菜单列表查询');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (92, '网站配置管理', 2, 1, 'site', 'team/site/index', NULL, 1, 0, 'C', '0', '0', '', 'dashboard', 'admin', '2024-07-23 01:02:03', 'admin', '2024-07-23 01:14:18', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (93, '网站配置查询', 92, 0, '', NULL, NULL, 1, 0, 'F', '0', '0', 'site:config:list', '#', 'admin', '2024-08-17 09:31:10', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (95, '修改网站配置', 92, 1, '', NULL, NULL, 1, 0, 'F', '0', '0', 'site:config:edit', '#', 'admin', '2024-08-17 09:32:22', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (96, '我的成果', 1, 2, 'achievement', 'own/achievement/index', NULL, 1, 0, 'C', '0', '0', '', 'documentation', 'admin', '2024-08-18 15:59:07', 'admin', '2024-09-07 07:47:08', '成果菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (97, '成果查询', 96, 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'own:achievement:query', '#', 'admin', '2024-08-18 15:59:07', 'admin', '2024-08-18 16:07:09', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (98, '成果新增', 96, 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'own:achievement:add', '#', 'admin', '2024-08-18 15:59:07', 'admin', '2024-08-18 16:07:17', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (99, '成果修改', 96, 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'own:achievement:edit', '#', 'admin', '2024-08-18 15:59:07', 'admin', '2024-08-18 16:07:31', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (100, '成果删除', 96, 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'own:achievement:remove', '#', 'admin', '2024-08-18 15:59:07', 'admin', '2024-08-18 16:07:38', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (102, '成果分类管理', 109, 2, 'pocs', '', NULL, 1, 0, 'C', '0', '1', '', 'list', 'admin', '2024-08-18 16:39:31', 'admin', '2024-09-07 07:17:18', '成果分类菜单');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (103, '成果分类查询', 102, 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'team:pocs:query', '#', 'admin', '2024-08-18 16:39:31', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (104, '成果分类新增', 102, 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'team:pocs:add', '#', 'admin', '2024-08-18 16:39:31', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (105, '成果分类修改', 102, 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'team:pocs:edit', '#', 'admin', '2024-08-18 16:39:31', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (106, '成果分类删除', 102, 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'team:pocs:remove', '#', 'admin', '2024-08-18 16:39:31', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (109, '成果管理', 110, 1, 'achievement', 'team/achievement/index', NULL, 1, 0, 'C', '0', '0', '', 'job', 'admin', '2024-08-21 13:08:30', 'admin', '2024-09-07 07:48:03', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (110, '荣誉体系管理', 2, 4, 'honer', NULL, NULL, 1, 0, 'M', '0', '0', '', 'chart', 'admin', '2024-09-07 00:11:55', 'admin', '2024-09-08 01:32:01', '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (111, '院系专业管理', 2, 2, 'eduction', 'team/eduction/index', NULL, 1, 0, 'C', '0', '0', '', 'education', 'admin', '2024-09-07 00:16:36', 'admin', '2024-09-07 07:00:22', '');
COMMIT;

-- ----------------------------
-- Table structure for sys_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
  `role_id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID',
  `role_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色名称',
  `role_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色权限字符串',
  `role_sort` int NOT NULL COMMENT '显示顺序',
  `data_scope` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '1' COMMENT '数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）',
  `menu_check_strictly` tinyint(1) DEFAULT '1' COMMENT '菜单树选择项是否关联显示',
  `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色状态（0正常 1停用）',
  `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志（0代表存在 2代表删除）',
  `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`role_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='角色信息表';

-- ----------------------------
-- Records of sys_role
-- ----------------------------
BEGIN;
INSERT INTO `sys_role` (`role_id`, `role_name`, `role_key`, `role_sort`, `data_scope`, `menu_check_strictly`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '超级管理员', 'admin', 1, '1', 1, '0', '0', 'admin', '2022-03-17 09:22:45', '', NULL, '超级管理员');
INSERT INTO `sys_role` (`role_id`, `role_name`, `role_key`, `role_sort`, `data_scope`, `menu_check_strictly`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '负责人', 'manage', 2, '2', 1, '0', '0', 'admin', '2022-03-28 21:02:19', 'admin', '2024-10-01 09:46:20', '实验室负责人');
INSERT INTO `sys_role` (`role_id`, `role_name`, `role_key`, `role_sort`, `data_scope`, `menu_check_strictly`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (3, '成员', 'member', 3, '3', 1, '0', '0', 'admin', '2022-03-29 22:59:55', 'admin', '2024-10-01 20:46:06', '工作室成员');
INSERT INTO `sys_role` (`role_id`, `role_name`, `role_key`, `role_sort`, `data_scope`, `menu_check_strictly`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (4, '历届负责人', 'pastmanage', 4, '1', 0, '0', '0', 'admin', '2022-04-08 13:38:41', 'admin', '2025-02-15 15:27:46', '历届负责人');
INSERT INTO `sys_role` (`role_id`, `role_name`, `role_key`, `role_sort`, `data_scope`, `menu_check_strictly`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (5, '指导老师', 'teacher', 5, '1', 1, '0', '0', 'admin', '2022-06-02 12:05:11', 'admin', '2024-10-01 09:46:56', NULL);
COMMIT;

-- ----------------------------
-- Table structure for sys_role_menu
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_menu`;
CREATE TABLE `sys_role_menu` (
  `role_id` bigint NOT NULL COMMENT '角色ID',
  `menu_id` bigint NOT NULL COMMENT '菜单ID',
  PRIMARY KEY (`role_id`,`menu_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='角色和菜单关联表';

-- ----------------------------
-- Records of sys_role_menu
-- ----------------------------
BEGIN;
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 2);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 7);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 8);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 9);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 10);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 11);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 37);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 38);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 39);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 40);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 41);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 42);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 43);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 44);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 46);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 47);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 48);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 49);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 50);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 51);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 52);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 53);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 54);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 55);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 56);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 57);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 76);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 77);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 78);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 79);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 80);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 84);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 85);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 86);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 87);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 88);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 89);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 90);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 91);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 92);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 93);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 95);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 102);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 103);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 104);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 105);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 106);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 109);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 110);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (2, 111);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 1);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 3);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 4);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 5);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 6);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 19);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 20);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 21);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 23);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 24);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 25);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 26);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 28);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 29);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 30);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 31);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 33);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 34);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 35);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 36);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 73);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 74);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 75);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 83);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 96);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 97);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 98);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 99);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (3, 100);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 1);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 2);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 3);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 4);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 5);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 6);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 7);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 8);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 9);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 10);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 11);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 19);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 20);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 21);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 23);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 24);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 25);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 26);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 28);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 29);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 30);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 31);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 33);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 34);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 35);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 36);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 37);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 41);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 46);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 49);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 73);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 74);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 75);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 76);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 77);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 78);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 79);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 80);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 83);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 85);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 86);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 91);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 92);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 93);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 102);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 103);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 109);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 110);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (4, 111);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 2);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 7);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 8);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 9);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 10);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 11);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 37);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 38);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 39);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 40);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 41);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 42);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 43);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 44);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 46);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 47);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 48);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 49);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 50);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 51);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 52);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 53);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 54);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 55);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 56);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 57);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 76);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 77);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 78);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 79);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 80);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 84);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 85);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 86);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 87);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 88);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 89);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 90);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 91);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 92);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 93);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 95);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 102);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 103);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 104);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 105);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 106);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 109);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 110);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (5, 111);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 1);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 2);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 3);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 4);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 5);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 6);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 7);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 8);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 9);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 10);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 11);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 12);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 13);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 14);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 19);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 20);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 21);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 23);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 24);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 25);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 26);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 28);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 29);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 30);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 31);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 33);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 34);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 35);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 36);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 37);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 38);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 39);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 40);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 41);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 42);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 43);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 44);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 46);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 47);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 48);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 49);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 50);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 51);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 52);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 53);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 54);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 55);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 56);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 57);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 58);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 59);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 60);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 61);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 62);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 63);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 64);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 65);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 66);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 67);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 68);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 69);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 70);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 71);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 72);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 73);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 74);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 75);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 76);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 77);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 78);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 79);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 80);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 81);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 82);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 83);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (6, 84);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 1);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 2);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 3);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 7);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 8);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 9);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 10);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 11);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 19);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 20);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 21);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 37);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 38);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 39);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 40);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 41);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 42);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 43);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 44);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 46);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 47);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 48);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 49);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 50);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 51);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 52);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 54);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 55);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 56);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 57);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 76);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 77);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 78);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 79);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 80);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (7, 84);
COMMIT;

-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
  `user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `user_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户账号',
  `nick_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户昵称',
  `user_type` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '00' COMMENT '用户类型（00系统用户）',
  `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户邮箱',
  `phonenumber` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '手机号码',
  `sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '用户性别（0男 1女 2未知）',
  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '头像地址',
  `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '密码',
  `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '帐号状态（0正常 1停用）',
  `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志（0代表存在 2代表删除）',
  `login_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '最后登录IP',
  `login_date` datetime DEFAULT NULL COMMENT '最后登录时间',
  `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
  `real_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '真实姓名',
  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '个人描述(用于官网展示)',
  `per_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '个人照片',
  `major_id` bigint DEFAULT NULL COMMENT '专业id',
  `grade_id` bigint DEFAULT NULL COMMENT '年级id',
  `academy_id` bigint DEFAULT NULL COMMENT '学院id',
  `extra` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '额外字段，详情可见模型',
  `show_sort` int NOT NULL DEFAULT '0' COMMENT '展示优先级排名（根据组内成员展示排序），默认为0，数字越大优先级越高',
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='用户信息表';

-- ----------------------------
-- Records of sys_user
-- ----------------------------
BEGIN;
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (1, 'admin', '123', '00', 'cl@163.com', '15888888888', '1', 'http://studio.codercl.xyz/studio/static/5d0b05ed-c3b7-4fa5-a87a-d6f6bb9df6d1.png', '{bcrypt}$2a$10$Bs2eg8FigkMIif86nDDb/ONEdcL8BTvlQJ6R8FJ3wO6eotHbsVlb2', '0', '0', '127.0.0.1', '2022-03-28 19:44:08', 'admin', '2022-03-17 09:22:45', '', '2025-02-15 07:47:09', '管理员', '茅津菁', '热爱生活，热爱coding...1', 'http://127.0.0.1:8999/studio/static/d639c944-db43-40a8-8cef-645081a416ad.png', 2, 3, 2, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (29, '2020tongxue1', '2020tongxue1', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:06:07', '', '2022-06-13 08:56:36', NULL, '路飞', '骷髅的旗帜,是信念的象征；每个人都有梦想,去实现吧!；我们是伙(同)伴啊!', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/9f295c18-c124-4b25-bfde-a385c4286d81.png', 1, 3, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (30, '2020tongxue2', '2020tongxue2', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:06:18', '', '2022-06-13 08:56:18', NULL, '龙猫', '心存善意,定能途遇天使；大声地笑出来,就不那么害怕了；没问题的,别担心,一切都会好的', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/de5b8775-1a17-4761-aa7d-9cf78d36e21d.png', 6, 3, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (31, '2021tongxue1', '2021tongxue1', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:06:26', '', '2024-10-27 15:48:25', NULL, '灰太狼', '立志要如山 ,行道要如水。不如山 ,不能坚定;不如水 ,不能曲达', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/97bf7c67-6c39-4330-827d-078cf1391822.png', 5, 2, NULL, NULL, 2);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (32, '2021tongxue2', '2021tongxue2', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:06:39', '', '2024-05-27 02:27:49', NULL, '柯南', '真相永远只有一个；当然是因为我喜欢你 比地球上任何一个人都喜欢你！人讲的话就像刀刃，要是用错了就会变成棘手的凶器。', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/7949d189-3f26-4efc-8997-776cb4c9ddc6.png', 4, 2, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (33, '2022tongxue1', '2022tongxue1', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:06:52', '', '2024-10-27 15:49:48', NULL, '哪吒', '去他个鸟命!我命由我,不由天!是魔是仙,我自己决定!生活你全是泪,越是折腾越倒霉,垂死挣扎你累不累,不如瘫在床上睡', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/2db68433-a646-4cca-94d7-145ec9b121dd.png', 2, 1, NULL, NULL, 3);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (34, '2021tongxue3', '2021tongxue3', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:07:03', '', '2022-06-13 08:55:01', NULL, '喜羊羊', '这一次，换我来保护你们吧！有本事来抓我啊！', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/160cf775-4599-4aff-9310-cff551647003.png', 1, 2, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (35, 'dijia', 'dijia', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:26:37', '', '2024-08-21 17:21:37', NULL, '迪迦', '大古，我感觉我们正失去一些美好的东西，善良温柔体贴——这些属于我们人类美好的本质——好像正慢慢淡化!', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/a93b7517-1f38-47ab-abe9-72fd297beccf.png', 2, 4, 2, '{\"studentExtra\":{\"logoImg\":\"\",\"directionType\":\"\",\"directionName\":\"\"}}', 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (36, 'yiquanchaoren', 'yiquanchaoren', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:28:18', '', '2022-06-13 08:54:23', NULL, '一拳超人', '世界上,没有一拳解决不了的事情。如果有,没有如果；只要你仍是因妥协成就的你,就永远战胜不了因兴趣铸就的我! ', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/beb50ee0-611d-4081-a65d-277c9d2d0b14.png', 2, 4, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (37, 'xiaozhi', 'xiaozhi', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:30:10', '', '2022-06-13 08:54:45', NULL, '小智', '我相信你', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/c7279fb3-7fb0-4ab4-9f1d-e0c51b503845.png', 2, 2, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (38, 'yingmuhuadao', 'yingmuhuadao', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:35:08', '', '2022-06-13 08:53:39', NULL, '樱木花道', '本人是天才篮球手樱木花道,看着,看我英勇的姿势!外面明明是春天,而我的心却是寒冬。我的春天来了,我的春天终于来了!我最喜', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/816a00da-8c45-4e4c-a856-026b00242ca7.png', 1, 2, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (39, 'labixiaoxin', 'labixiaoxin', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:36:46', '', '2025-02-15 07:44:10', NULL, '蜡笔小新', '大家好!我是野原新之助,大家都叫我小新,我今年五岁,喜欢的颜色是白色,喜欢的内裤图案是动感超人哦!', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/zhifeng/ 55145763-e43a-48d4-bbd3-4a27694af422.png', 1, 1, NULL, '{\"studentExtra\":{\"logoImg\":\"http://127.0.0.1:8999/studio/static/8953d6de-3fb5-47ee-bc19-3b8c94e9955f.png\",\"directionType\":2,\"directionName\":\"南京大学\"}}', 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (40, 'qianxun', 'qianxun', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:38:39', '', '2024-05-26 16:44:32', NULL, '千寻', '不管前方的路有多崎岖，只要方向正确，都比站在原地更接近幸福。曾经发生过的事情不可能忘记，只不过是想不起而已。', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/f0e590cf-0895-4776-a5cb-e038a54c0b71.png', 2, 1, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (41, 'bailong', 'bailong', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:40:43', '', '2025-02-15 07:41:49', NULL, '白龙', '我不知道将去何方,但我已在路上。我们会在原来的世界相遇吗,会的一定会,重要的人就算走到哪里都不会忘记。千万不可以丢失自我', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/zhifeng/ 08261d7c-bb2f-4069-8483-5dddf2584904.png', 7, 1, 2, '{\"studentExtra\":{\"logoImg\":\"http://127.0.0.1:8999/studio/static/1afc18ad-5f16-44c0-b6cb-73b2c741eaf6.png\",\"directionType\":3,\"directionName\":\"杭州玳数科技有限公司\"},\"teacherExtra\":{\"teacherMainHref\":\"https://www.baidu.com/\"}}', 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (42, 'mingren', 'mingren', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:42:10', '', '2025-02-15 07:42:45', NULL, '鸣人', '我决定了,从今天起,我要选择一条不会让自己后悔的路。我要创造出属于自己的忍道!你别小看我!我不会临阵脱逃!', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/zhifeng/ 0d7101f6-0d2d-44a5-9dd0-43aa1f8dcc92.png', 2, 1, 2, '{\"studentExtra\":{\"logoImg\":\"\",\"directionType\":1,\"directionName\":\"\"}}', 2);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (43, 'sunwukong', 'sunwukong', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:44:07', '', '2022-06-13 08:52:03', NULL, '孙悟空', '我是在地球上成长的赛亚人!这就是那个魔人布欧么?好像不怎么强的样子。这家伙我一个人就够了!', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/39d94b94-87b0-4498-af7a-f8581b1d5cc2.png', 4, 2, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (44, 'duolaameng', 'duolaameng', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:46:32', '', '2024-10-01 17:20:52', NULL, '哆啦a梦', '人的眼睛为什么长在前面？为的就是要你不断的前进，不要总是回想过去的事，应该以明天为目标。梦想是一个天真的词，实现梦想是一', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/afd2223d-e2b6-4af0-9614-7e7289744089.png', 5, 2, NULL, NULL, 1);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (45, 'tiejiaxiaobao', 'tiejiaxiaobao', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:48:31', '', '2024-05-24 14:00:30', NULL, '铁甲小宝1', '是男人就该默默地工作, 嘿嘿 !绝对不能让你得到和平星。这就是友情的力量。1', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/1b4e014a-6a4c-4c3c-a52f-201e770d4ea4.png', 1, 3, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (46, 'yixiu', 'yixiu', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:50:41', '', '2024-10-01 17:03:33', NULL, '一休', '明白了,母亲大人的意思是想提醒我不要自满对吧。不要着急,不要着急,休息,休息一会。我已经吃得饱饱的了,你就别客气了。', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/5e988da5-f631-4537-8814-094d8badc61e.png', 4, 2, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (47, 'changlu', 'changlu', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2022-06-11 16:52:46', '', '2025-02-15 07:47:28', NULL, '长路老师', '每个人都是独一无二的，把握好自己的节奏，跟着自己的心走。', 'http://pictured-bedtest.oss-cn-beijing.aliyuncs.com/test/studio/c2d7f120-cb60-47cc-91da-8f55bd2d285c.png', 3, NULL, NULL, '{\"teacherExtra\":{\"teacherMainHref\":\"https://baike.baidu.com/item/%E9%83%AD%E9%93%81%E9%93%AE/64453120?fr=ge_ala\"}}', 1);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (50, 'test', 'test', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2024-09-30 12:59:14', '', '2024-10-01 17:00:20', NULL, '', '', '', NULL, NULL, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (57, 'maojinjing', 'maojinjing', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2024-10-01 20:44:01', '', NULL, NULL, '', '', '', NULL, NULL, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (59, 'teacher_manage', 'teacher_manage', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '1', '0', '', NULL, '', '2024-10-01 20:56:01', '', NULL, NULL, '', '', '', NULL, NULL, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (60, 'changlu1', 'changlu1', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2024-10-04 10:03:00', '', NULL, NULL, '', '', '', NULL, NULL, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (61, 'changluya', 'changluya', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2024-11-23 23:28:03', '', NULL, NULL, '', '', '', NULL, NULL, NULL, NULL, 0);
INSERT INTO `sys_user` (`user_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `real_name`, `description`, `per_img`, `major_id`, `grade_id`, `academy_id`, `extra`, `show_sort`) VALUES (62, 'changlua', 'changlua', '00', '', '', '0', '', '{bcrypt}$2a$10$YRUt/CfG3KeRcVznjYscVe2TmKTr0GDnD2U.jwkashn.ufVynOwda', '0', '0', '', NULL, '', '2024-11-23 23:28:47', '', NULL, NULL, '', '', '', NULL, NULL, NULL, NULL, 0);
COMMIT;

-- ----------------------------
-- Table structure for sys_user_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `role_id` bigint NOT NULL COMMENT '角色ID',
  PRIMARY KEY (`user_id`,`role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='用户和角色关联表';

-- ----------------------------
-- Records of sys_user_role
-- ----------------------------
BEGIN;
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (1, 1);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (18, 4);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (19, 2);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (29, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (30, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (31, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (32, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (32, 4);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (33, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (34, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (35, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (35, 4);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (36, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (37, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (38, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (39, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (40, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (41, 2);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (41, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (42, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (43, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (44, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (45, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (46, 2);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (46, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (47, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (47, 5);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (48, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (50, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (57, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (59, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (59, 5);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (60, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (61, 3);
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (62, 3);
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;
